Method and computing system for estimating parameter for robot operation

ABSTRACT

A computing system and method for estimating friction and/or center of mass (CoM) are presented. The system may perform the method by selecting at least one of: (i) a first joint from among a plurality of joints, or (ii) a first arm segment from among a plurality of arm segments. The computing system further outputs a set of one or more movement commands for causing robot arm movement that includes relative movement between the first arm segment and a second arm segment via the first joint, and receiving a set of actuation data and a set of movement data associated with the first joint or the first arm segment. The computing system further determines, based on the set of actuation data and the set of movement data, at least one of: (i) a friction parameter estimate or (ii) a CoM estimate.

CROSS-REFERENCE TO RELATED APPLICATION(S)

The present application claims the benefit of U.S. ProvisionalApplication No. 63/021,089, entitled “A ROBOTIC SYSTEM WITH ROBOTOPERATION PARAMETER DETERMINATION,” and filed May 7, 2020, the entirecontent of which is incorporated by reference herein.

FIELD OF THE INVENTION

The present disclosure is related to a method and computing system forestimating one or more parameters for robot operation.

BACKGROUND OF THE INVENTION

As automation becomes more common, robots are being used in moreenvironments, such as in warehousing and retail environments. Forinstance, robots may be used to interact with objects in a warehouse.The movement of the robot may be fixed, or may be based on an input,such as information generated by a sensor in the warehouse.

However, despite technological advancements, robots often lack thesophistication necessary to duplicate human interactions required forexecuting larger and/or more complex tasks. In order for a robot toapproximate human action, the robot should be calibrated in order tocontrol movement of the robot with accuracy and precision.

SUMMARY

One aspect of the present disclosure relates to a computing systemand/or a method performed by the computing system. The computing systemmay comprise a communication interface and at least one processingcircuit. The communication interface may be configured to communicatewith a robot having a robot arm that includes a plurality of armsegments which are movably connected to each other at a plurality ofjoints. The at least one processing circuit may be configured, when thecomputing system is in communication with the robot, to perform themethod, such as by executing instructions on a non-transitorycomputer-readable medium. The method may include selecting at least oneof: (i) a first joint from among the plurality of joints, or (ii) afirst arm segment from among the plurality of arm segments, wherein thefirst joint connects the first arm segment to a second arm segment thatis immediately adjacent to the first arm segment. The method furtherincludes outputting a set of one or more movement commands for causingrobot arm movement that includes relative movement between the first armsegment and the second arm segment via the first joint. The method mayfurther include receiving a set of actuation data and a set of movementdata associated with the first joint or the first arm segment. The setof actuation data may be sensor data indicative of overall torque oroverall force at the first joint in a time period during which therelative movement between the first arm segment and the second armsegment is occurring. The set of movement data may be sensor dataindicative of an amount or rate of the relative movement between thefirst arm segment and the second arm segment during the time period. Themethod may further include determining, based on the set of actuationdata and the set of movement data, at least one of: (i) a frictionparameter estimate associated with friction between the first armsegment and the second arm segment, or (ii) a center of mass (CoM)estimate associated with the first arm segment.

BRIEF DESCRIPTION OF THE FIGURES

FIGS. 1A-1C illustrate a system for performing robot calibration,consistent with embodiments hereof.

FIGS. 2A-2C provide block diagrams that illustrate a computing systemfor performing robot calibration, consistent with embodiments hereof.

FIGS. 3A-3E illustrate an environment in which robot calibration may beperformed, consistent with an embodiment hereof.

FIG. 4 illustrates a flow diagram which illustrates an example methodfor performing robot calibration, consistent with embodiments hereof.

FIGS. 5A and 5B illustrate movement of an arm segment, consistent withembodiments hereof.

FIGS. 6A-6C illustrate rotational position, rotational velocity, orrotational acceleration for performing robot calibration, consistentwith embodiments hereof.

FIGS. 7A-7C illustrate rotational position, rotational velocity, orrotational acceleration for performing robot calibration, consistentwith embodiments hereof.

FIG. 8 illustrates an imaginary cone that represents possibleorientations for a rotational axis, consistent with an embodimenthereof.

FIG. 9 illustrates an example of sensor data for performing robotcalibration, consistent with an embodiment hereof.

FIGS. 10A-10D illustrate examples of sensor data for performing robotcalibration, consistent with an embodiment hereof.

FIGS. 11A and 11B illustrate an example of sensor data for performingrobot calibration, consistent with an embodiment hereof.

DETAILED DESCRIPTION OF THE FIGURES

One aspect of the present disclosure relates to estimating a property ofa robot, which may be performed as part of a robot calibrationoperation. In some scenarios, the robot may be located in, e.g., awarehouse or factory, and may be used to pick up or otherwise interactwith objects in that environment. The robot calibration operation mayinvolve estimating a parameter which describes a physical property ofthe robot, such as friction between components of the robot, or alocation of a center of mass (CoM) of a component of the robot. In somescenarios, the values of these physical properties may deviate fromnominal or theoretical values provided by a manufacturer of the robot.The deviation may arise from a variety of factors, such as manufacturingtolerance, aging, temperature change, or some other factor.

In an embodiment, the robot calibration operation may involve actuatingone or more components of the robot so as to cause their movement.Sensor data that describe the movement may be generated, which may beused to perform the robot calibration operation. In some instances, thecomponents of the robot may be, e.g., arm segments of a robot arm. Insome implementations, the robot calibration may be performed so as tofacilitate more accurate or precise control of the robot arm. The robotcalibration operation may be used to, e.g., plan or execute a trajectoryfor the robot arm. For instance, motor signals or other movementcommands may be generated in a manner that accounts for physicalproperties of the robot arm, which may have been determined from therobot calibration operation.

In an embodiment, the robot calibration operation may be performed on acomponent-by-component basis. For instance, if the robot arm discussedabove includes multiple arm segments that are connected at a pluralityof joints, the robot calibration operation may be performed on ajoint-by-joint basis or a segment-by-segment basis. Such a manner ofperforming the robot calibration operation may involve directlyactuating only one joint or only one arm segment at a time or, moregenerally, causing motion of only one joint at a time or only one armsegment at a time. Such a manner of robot calibration may reduce anamount of movement or range of movement during the robot calibrationoperation, which may better accommodate environments that have tightspace constraints. Further, such a manner of robot calibration may alsoenhance an accuracy of robot calibration, by avoiding simultaneousmovement of multiple joints or multiple arm segments, because thesimultaneous movement of multiple arm segments or multiple joints ismore likely to generate vibrations that can introduce measurement noiseinto sensor data used for the robot calibration.

In an embodiment, performing the robot calibration may involve using afirst movement profile that may generate sensor data which is moreoptimal for estimating friction, and using a second speed profile thatmay generate sensor data which is more optimal for estimating center ofmass (CoM). For example, the first movement profile may attempt to causea speed of the resulting movement to have a broad range of values, whichmay benefit the determination of a friction parameter estimate, such asan estimate for a coefficient of viscous friction. In this example, thesecond movement profile may attempt to limit a speed or acceleration ofthe resulting movement, which may limit an amount of measurement noisethat is introduced into the sensor data.

In an embodiment, if the robot arm includes a plurality of arm segmentsconnected in series, estimating a center of mass (CoM) for one armsegment may involve removing or otherwise compensating for an influenceon the arm segment from one or more downstream arm segments. In someinstances, performing the robot calibration operation may involvedetermining a respective CoM estimate for a furthest downstream armsegment before determining a respective CoM estimate for any other armsegment. In such instances, the robot calibration operation may thenproceed in an upstream direction to determine a CoM estimate of anupstream arm segment. Thus, when a CoM estimate for an arm segment isbeing determined, information regarding a CoM of downstream arm segmentsmay already be available, which may allow for an influence from thedownstream arm segments to be removed or accounted for.

FIGS. 1A, 1B, and 1C illustrate a system 1000 for determininginformation which estimates or otherwise describes a physical propertyor physical properties of a robot, or more specifically for performingrobot calibration. One skilled in the art will realize that FIGS. 1A-1Cillustrate one example of a system 1000 that is used to perform robotcalibration, and that components illustrated in FIGS. 1A-1C may beremoved or omitted, and/or additional components may be added to thesystem 1000. As illustrated in FIG. 1A, the system 1000 may include acomputing system 1100 and a robot 1200. In an embodiment, the system1000 may be a robot calibration system or a component thereof, whereinthe robot calibration system is configured to perform robot calibration,which may involve, e.g., determining one or more physical properties orsome other property of the robot 1200. The robot calibration may beperformed, e.g., so as to enhance a level of accuracy by which robotmovement (also referred to as robot motion) of the robot 1200 may becontrolled, or more specifically to enhance an ability to plan and/oraccurately execute a trajectory for the robot 1200.

In some instances, the computing system 1100 may determine the one ormore physical properties of the robot 1200, and/or may use the one ormore physical properties of the robot 1200 to generate movement commandsfor causing the robot 1200 to output movement (also referred to asmotion) according to a planned trajectory. For example, the computingsystem 1100 may be configured to determine movement commands (e.g.,motor commands) which are specific to or otherwise take into account theone or more physical properties of the robot 1200. As an example, theone or more physical properties may include, e.g., friction betweencomponents of the robot 1200 (e.g., arm segments of a robot arm),respective locations at which those components have their center of mass(CoM), respective values for mass or moment of inertia of thosecomponents, and/or some other physical property. These properties of therobot may constrain or otherwise affect motion of the robot 1200, and/oraffect how components of the robot 1200 should be actuated.

In some instances, the properties that are estimated by system 1000 maybe utilized to describe physics (e.g., kinematics) of the motion of therobot 1200, such as by describing how one or more components of therobot 1200 responds to a force, torque, or other form of actuation. Ifthe computing system 1100 of FIG. 1A or another computing system is usedto control movement of the robot 1200, the movement may be controlledbased on the properties that are estimated. For instance, a motor orother actuator may output a force or torque to initiate or adjust motionof a component of the robot 1200 (e.g., linear motion or rotationalmotion), but the motion may be affected by factors such as a force dueto friction (which may resist the motion or a change in the motion), aforce due to gravity, and/or an inertial element such as mass or momentof inertia of the component (which may also resist the motion or achange in the motion). In this example, controlling motion for thecomponent of the robot may involve compensating for the above factors,or more generally taking them into account, when determining, e.g.,magnitude values, direction, and/or duration of a force or torque to beoutput by an actuator used to drive the component of the robot. Themotion control may be used to, e.g., execute a trajectory by the robot1200, which in some scenarios may involve precisely following plannedvalues for position, velocity or speed, and/or acceleration for variouscomponents of the robot. That is, the motion control may involvefollowing a planned trajectory, which may involve a specific value orset of values for velocity and/or acceleration of various components ofthe robot. The estimates of the physical properties discussed above maybe used to control the actuators so as to cause the executed trajectoryto closely match the planned trajectory.

In an embodiment, performing the robot calibration may involvedetermining or updating a force model and/or torque model. In such anembodiment, the computing system 1100 (or some other computing system)may determine how much force and/or torque to be applied by anactuator(s), or a direction or duration of the force and/or torque,based on the force model and/or torque model. In some instances, theforce model and/or torque model may be formed by or may includeinformation that describes factors which influence an overall force oroverall torque on the robot 1200 or a component thereof. For example,the force model and/or torque model may include values for parametersthat represent, e.g., friction, gravity, mass, moment of inertia, and/ora combination thereof. In some scenarios, the force model and/or torquemodel may include a friction model, which may include information thatdescribes how much friction will be experienced by the robot or acomponent thereof. As an example, the friction model may includeparameters which represent viscous friction (also referred to as dynamicfriction or sliding friction) and coulomb friction (also referred to asstatic friction), which are discussed below in more detail. In somesituations, the force model and/or torque model may describe arelationship (e.g., mathematical relationship) between a force and/ortorque output by an actuator(s) and an overall torque or overall forceexperienced by the component of the robot, and/or may describe arelationship between the force and/or torque output by the actuator(s)and resulting motion of the component of the robot. In the aboveexample, if the robot calibration results in a force model or torquemodel, the computing system 1100 (or some other computing system) mayutilize the force model and/or torque model to control the actuator(s),or more generally to control motion of the robot 1200.

As stated above, the system 1000 of FIG. 1A may be used to perform robotcalibration, such as by determining information which describes orotherwise represents a physical property or properties of the robot1200. In some instances, the system 1000 (and associated methodsperformed by the system 1000) operates to perform robot calibration bycausing movement of the robot 1200, and using data which describes themovement to determine the physical properties of the robot. Moreparticularly, during the movement, the computing system 1100 may monitorthe robot 1200 and receives sensor data which describes the movement ofa component of the robot 1200. Based on the received sensor data, thecomputing system 1100 may determine a respective value for each of thephysical properties of the robot 1200 or a component thereof.

In an embodiment, the robot 1200 may include a robot arm 1210, andperforming robot calibration may involve determining a physical propertyor physical properties for components (e.g., arm segments) of the robotarm 1210. More particularly, the robot arm 1210 may include a number, n,of arm segments 1212 ₁, 1212 ₂, . . . 1212 _(n) (also referred to aslinks of the robot arm 1210), and the physical property or propertiesdetermined from robot calibration may describe one or more of the armsegments 1212 ₁-1212 _(n). In some instances, each of the arm segments1212 ₁-1212 _(n) may be independently actuatable or moveable in multipleplanes of motion. In some implementations, the arm segments 1212 ₁-1212_(n) may be coupled to each other in series (e.g., via a plurality ofjoints), such that the robot arm 1210 is formed from a series of the armsegments 1212 ₁-1212 _(n). In this embodiment, the arm segments 1212₁-1212 _(n) may form a kinematic chain for moving an end effector orother arm segment to a particular pose. For instance, the arm segments1212 ₁-1212 _(n) may be coupled such that each of the arm segments 1212₁-1212 _(n) has a first end (e.g., proximal end) which is coupled to arobot base or to a preceding arm segment in the series of arm segments1212 ₁-1212 _(n), and has a second end (e.g., distal end) that iscoupled to a following arm segment in the series of arm segments 1212₁-1212 _(n) or forms a distal end of the robot arm 1210. In this manner,the arm segment 1212 ₁ may be followed by the arm segment 1212 ₂, whichmay be followed by the arm segment 1212 ₃, which may be followed by thearm segment 1212 ₄, etc. As an example, the arm segment 1212 ₁ may becoupled to the robot base at a proximal end of the arm segment 1212 ₁and may be coupled to arm segment 1212 ₂ at a distal end of the armsegment 1212 ₁. Further in this example, the arm segment 1212 ₂ may becoupled to the arm segment 1212 ₁ at a proximal end of the arm segment1212 ₂, and may be coupled to the arm segment 1212 ₃ at a distal end ofthe arm segment 1212 ₂. One skilled in the art will realize that thearms segments 1212 ₁-1212 _(n) may be coupled in any arrangement inorder to perform movements according to operational requirements of therobot 1200. In some implementations, the arm segment 1212 _(n) may bethe end effector apparatus.

In an embodiment, if the robot calibration involves determininginformation regarding a physical property of the arm segments 1212₁-1212 _(n) of the robot arm 1210, the information may be used tocontrol movement of the robot arm 1210. For instance, the arm segments1212 ₁-1212 _(n) may be movable relative to one another to produce anoverall motion of the robot arm 1210 to achieve a desired pose for anend effector or other arm segment at a distal end of the robot arm 1210.If the computing system 1100 is involved in controlling movement of therobot arm 1210, such as by planning a trajectory for the robot arm 1210,the computing system 1100 may plan movement of individual arm segments.This planning of movement for the individual arm segments may be basedon the determined information regarding a physical property of theindividual arm segments. In some instances, the robot calibration mayinvolve determining a force model and/or torque model that describesfactors which affect how much overall force or overall torque is exertedon the individual arm segments. For example, the force model and/ortorque model may apply to an arm segment or a joint connecting a pair ofarm segments, and may describe a relationship between an overall forceor overall torque experienced by the arm segment or the joint and anamount or rate of movement by the arm segment relative to the joint. Insuch instances, the computing system 1100 may plan movement of theindividual arm segments based on the force model and/or torque model.

In an embodiment, if performing the robot calibration involvesdetermining information regarding a physical property for each armsegment of the arm segments 1212 ₁-1212 _(n) of the robot arm 1210, thephysical property may involve a parameter which describes a relationshipbetween movement of the arm segment and torque or force directly appliedto the arm segment. For example, the parameter may describe, for each ofthe arm segments 1212 ₁-1212 _(n), a location of a center of mass of thearm segment, mass or weight of the arm segment, how mass of the armsegment is distributed, a moment of inertia of the arm segment, and/orfriction between the arm segment and another component (e.g., anotherarm segment) of the robot arm 1210. The parameter may be used by thecomputing system 1100 or any other computing system when planning atrajectory for the robot arm 1210. For instance, the computing system1100 may use the parameter to predict how much movement or a rate ofmovement will be produced by a particular amount of force or torque, orto determine how much force or torque is needed to generate a certainamount of movement or rate of movement. More particularly, the computingsystem 1100 may use the parameter to determine an amount of force ortorque which compensates for an effect of friction on an arm segment, aneffect of gravity on the arm segment (which may be approximated asacting on the CoM of the arm segment), and/or mass or moment of inertiaof the arm segment.

In an embodiment, as illustrated in FIG. 1B, the robot 1200 may includea set 1220 of one or more sensors and a set 1230 of one or moreactuators (e.g., motors), which may be used to perform the robotcalibration operation. The set 1230 of one or more actuators may each beconfigured to output a force or a torque, which may be applied to one ormore of the arm segments 1212 ₁-1212 _(n) of the robot arm 1210 so as tocause movement of the one or more arm segments. In an embodiment, theoperation of the set 1230 of one or more actuators may be controlled bythe computing system 1100. For instance, the computing system 1100 maybe configured to output one or more movement commands for causingactivation of at least one actuator of the set 1230 of one or moreactuators. In some implementations, the one or more movement commandsmay include an analog and/or digital signal for causing the set 1230 ofone or more actuators to activate and output a force and/or torque. Theone or more movement commands may in some instances control how muchforce or torque is output by the activated actuator, a direction of theforce or torque, and/or a duration of the force or torque.

In an embodiment, as illustrated in FIG. 1C, the set 1230 of one or moreactuators may include a plurality of actuators 1230 ₁-1230 _(n), each ofwhich may output a force or torque for causing movement of a respectivearm segment of the plurality of arm segments 1212 ₁-1212 _(n). Forinstance, the multiple actuators 1230 ₁-1230 _(n) may be configured tooutput torque for rotating or otherwise moving the arm segments 1212₁-1212 _(n). In one example, the actuators 1230 ₁-1230 _(n) may becoupled to or disposed at the arm segments 1212 ₁-1212 _(n), and mayoutput respective forces or torques when activated to cause movement ofthe arm segments 1212 ₁-1212 _(n), respectively. In such an example,activation of the actuators 1230 ₁-1230 _(n) and/or respective amountsof force or torque output by the actuators 1230 ₁-1230 _(n) may becontrolled by the computing system 1100 (e.g., via movement commands).

In an embodiment, the set 1220 of one or more sensors are configured togenerate one or more sets of sensor data (also referred to as data sets)that are used by the computing system 1100 to perform robot calibration.In some scenarios, the data sets may measure or otherwise represent themovement of the one or more of the arm segments 1212 ₁-1212 _(n) and/ora force or torque experienced by the arm segments 1212 ₁-1212 _(n). Forexample, one or more data sets for the sensor data may include a set ofactuation data and a set of movement data.

In an embodiment, the set of actuation data may include data thatrepresents overall force and/or overall torque experienced by one ormore of the arm segments 1212 ₁-1212 _(n). The overall force or overalltorque on an arm segment may include or be based on forces or torquesdue to a contribution by the actuators 1230 ₁-1230 _(n), forces ortorques due to a contribution from gravity, and forces or torques due toa contribution from friction.

In an embodiment, the set of movement data for one of the arm segments1212 ₁-1212 _(n) may include data that represents an amount of movementor rate of movement (e.g., velocity or acceleration) of the arm segment.The movement may be, e.g., rotation of an arm segment, linear movementof the arm segment, or some other movement. In some instances, theamount of movement or rate of movement may be measured relative toanother component of the robot 1200, such as another arm segment. Forinstance, a position of this other arm segment may be treated as abaseline position (or, more generally, a reference frame) from which theamount of movement or rate of movement of the moving arm segment ismeasured. In some instances, the amount of movement may be representedby a position or displacement of the moving arm segment, which may berelative to, e.g., the baseline position discussed above. If themovement involves rotation of one arm segment relative to the baselineposition, the position or displacement may also be referred to as arotational position, rotational displacement, or angular displacement,and may be measured in degrees or radians. In some instances, a positivevalue for the rotational position may indicate that the moving armsegment has rotated in one direction (e.g., counterclockwise direction)past the baseline position, while a negative value for the rotationalposition may indicate that the moving arm segment has rotated in anopposite direction (e.g., clockwise direction) past the baselineposition.

In an embodiment, the set 1220 of one or more sensors may include afirst set of sensors 1222 ₁, 1222 ₂, . . . 1222 _(n) for generating theactuation data and a second set of sensors 1224 ₁, 1224 ₂, . . . 1224_(n) for generating the movement data, as illustrated in FIG. 1C. Insome implementations, the first set of sensors 1222 ₁-1222 _(n) may bedisposed at or otherwise corresponds with the arm segments 1212 ₁-1212_(n). Similarly, the second set of sensors 1224 ₁-1224 _(n) may also bedisposed at or otherwise corresponds with the arm segments 1212 ₁-1212_(n). In this example, each of the first set of sensors 1222 ₁-1222 _(n)may generate a respective set of actuation data which is indicative offorce or torque at a respective arm segment of the plurality of armsegments 1212 ₁-1212 _(n). Further, each of the second set of sensors1224 ₁-1224 _(n) may generative a respective set of movement data whichis indicative of an amount or rate of movement of a respective armsegment of the plurality of arm segments 1212 ₁-1212 _(n). In someimplementations, the arm segments 1212 ₁-1212 _(n) are driven orotherwise actuated by the actuators 1230 ₁-1230 _(n), and each sensor ofthe first set of sensors 1222 ₁-1222 _(n) may be a torque sensor or anelectrical current sensor that corresponds to a respective actuator ofthe plurality of actuators 1230 ₁-1230 _(n). If the each of the sensors1222 ₁-1222 _(n) is an electrical current sensor, the sensor may beconfigured to measure a respective amount of electrical current flowingthrough the sensor, which may be substantially equal to a respectiveamount of electrical current flowing through a respective actuator ofthe plurality of actuators 1230 ₁-1230 _(n). The amount of electricalcurrent flowing through the actuator may be used to calculate orotherwise determine an amount of overall force or overall torqueexperienced by a corresponding arm segment. This calculation may beperformed by the computing system 1100, or by the sensors 1222 ₁-1222_(n) themselves.

FIG. 2A provides a block diagram that illustrates an embodiment of thecomputing system 1100. The computing system 1100 includes at least oneprocessing circuit 1110 and a non-transitory computer-readable medium(or media) 1120. In an embodiment, the processing circuit 1110 includesone or more processors, one or more processing cores, a programmablelogic controller (“PLC”), an application specific integrated circuit(“ASIC”), a programmable gate array (“PGA”), a field programmable gatearray (“FPGA”), any combination thereof, or any other processingcircuit. In an embodiment, the non-transitory computer-readable medium1120 may be a storage device, such as an electronic storage device, amagnetic storage device, an optical storage device, an electromagneticstorage device, a semiconductor storage device, or any suitablecombination thereof, for example, such as a computer diskette, a harddisk drive (HDD), a solid state drive (SSD), a random access memory(RAM), a read-only memory (ROM), an erasable programmable read-onlymemory (EPROM or Flash memory), a static random access memory (SRAM), aportable compact disc read-only memory (CD-ROM), a digital versatiledisk (DVD), a memory stick, any combination thereof, or any otherstorage device. In some instances, the non-transitory computer-readablemedium 1120 may include multiple storage devices. The non-transitorycomputer-readable medium 1120 may alternatively or additionally storecomputer readable program instructions that, when executed by theprocessing circuit 1110, causes the processing circuit 1110 to performone or more methods described herein, such as the operations describedwith respect to method 4000 illustrated in FIG. 4 .

FIG. 2B depicts a computing system 1100A that is an embodiment of thecomputing system 1100 and that includes a communication interface 1130.The communication interface 1130 may be configured to provide a wired orwireless communication pathway between the computing system 1100A andthe robot 1200, such as with the sensors (e.g., 1220) and/or actuators(e.g., 1230) discussed above. As an example, the communication circuitmay include a RS-232 port controller, a USB controller, an Ethernetcontroller, a Bluetooth® controller, a PCI bus controller, a networkcontroller, any other communication circuit, or a combination thereof.If the computing system 1100A generates one or more movement commands,the communication interface 1130 may be configured to communicate theone or more movement commands to the set 1230 of actuators. Further, ifthe set 1220 of sensors generate sensor data, the communicationinterface 1130 may be configured to receive the sensor data (e.g.,movement data and actuation data) from the set 1220 of sensors. In sucha situation, the processing circuit 1110 of the computing system 1100may be configured to directly or indirectly receive the sensor data viathe communication interface 1130.

In an embodiment, the processing circuit 1110 may be programmed by oneor more computer-readable program instructions stored on thenon-transitory computer-readable medium 1120. For example, FIG. 2Cillustrates a computing system 1100B, which is an embodiment of thecomputing system 1100/1100A, in which the processing circuit 1110 isprogrammed by one or more modules, including a robot calibration module1122, which may include computer-readable program instructions forperforming robot calibration. In various embodiments, the terms“computer-readable instructions” and “computer-readable programinstructions” are used to describe software instructions or computercode configured to carry out various tasks and operations. In variousembodiments, the term “module” refers broadly to a collection ofsoftware instructions or code configured to cause the processing circuit1110 to perform one or more functional tasks. The modules andcomputer-readable instructions may be described as performing variousoperations or tasks when a processing circuit or other hardwarecomponent is executing the modules or computer-readable instructions.

In an embodiment, as illustrated in FIG. 2C, the non-transitorycomputer-readable medium 1120 may store or otherwise include sensor data1124, which may be used by the processing circuit 1110 to perform robotcalibration. The sensor data 1124 may include, e.g., the actuation dataand the movement data described above. In some scenarios, the sensordata 1124 may have been generated by the set 1220 of sensors of FIG. 1B,and may have been received via the communication interface 1130 of FIG.2B. If the stored sensor data 1124 is used to perform a robotcalibration operation, the non-transitory computer-readable medium 1120may further store information 1126 that is determined as a result of therobot calibration operation (also referred to as robot calibrationinformation 1126). The robot calibration information 1126 may describe aphysical property or physical properties of a robot (e.g., 1200). Forexample, the robot calibration information may include respectiveestimates (also referred to as estimated values) for various parameterswhich describe the physical property or physical properties of therobot. In some instances, the robot calibration information may describea torque model, a force model, and/or a friction model.

FIGS. 3A-3D illustrate an example environment(s) in which robotcalibration may be performed according to various embodiments. Oneskilled in the art will realize that FIGS. 3A-3D illustrate one exampleof an environment(s) for performing robot calibration, and that existingcomponents illustrated in FIGS. 3A-3D may be removed and/or additionalcomponents may be added to the environment. FIG. 3A presents a side viewof a robot 3200, which may be an embodiment of the robot 1200. The robot3200 may include a robot arm 3210 that is coupled to a base 3202. In theexample of FIG. 3A, the robot arm 3210 may include a plurality of armsegments 3212 ₁, 3212 ₂, 3212 ₃, 3212 ₄, 3212 ₅, and 3212 ₆ (alsoreferred to as links), which may be coupled at a plurality of joints3214 ₁, 3214 ₂, 3214 ₃, 3214 ₄, 3214 ₅. In the example of FIG. 3A, thearm segments 3212 ₁-3212 ₆ may be connected as a series of arm segments,which may extend in a downstream direction, which may be a directionaway from the base 3202. In this example, the arm segment 3212 ₆ whichis furthest downstream along the robot arm 3210 may be an end effectorapparatus (e.g., a robot gripper), and may form a distal end of therobot arm 3210. That is, the arm segment 3212 ₆ may be the most distalarm segment of the robot arm 3210, relative to the robot base 3202.

In an embodiment, the joints 3214 ₁-3214 ₅ may directly couplerespective pairs of immediately adjacent arm segments. For example, thearm segment 3212 ₁ is coupled to the arm segment 3212 ₂ at a joint 3214₁. In this example, the arm segment 3212 ₁ and the arm segment 3212 ₂may be considered to be immediately adjacent to each other because theyare directly coupled to each other via the joint 3214 ₁. The joint 3214₁ may allow relative movement between the pair of arm segments 3212 ₁,3212 ₂. In one example, the joint 3214 ₁ may be a revolute joint (or,more generally, a pivot point) that allows relative rotation between thepair of arm segments 3212 ₁, 3212 ₂, or more particularly allows the armsegment 3212 ₂ to rotate relative to the arm segment 3212 ₁. In thisexample, the other joints 3214 ₂ through 3214 ₅ may each be a revolutejoint that directly connects a respective pair of immediately adjacentarm segments, and that permits relative rotation between the pair of armsegments. For instance, the joint 3214 ₅ may directly connect armsegment 3212 ₅ and arm segment 3212 ₆, and permit the arm segment 3212 ₆to rotate relative to the arm segment 3212 ₅. In another example, therobot arm 3210 may additionally or alternatively have prismatic jointswhich permit relative linear motion (also referred to as relativelateral motion) between a pair of immediately adjacent arm segments.

As stated above, the arm segments 3212 ₁-3212 ₆ may be connected as aseries of arm segments, which may extend in a downstream direction, fromthe arm segment 3212 ₁ to the arm segment 3212 ₆. The arm segment 3212 ₁may be closest (also referred to as being most proximal) to the robotbase 3202, while the arm segment 3212 ₆ may be the furthest (i.e., alsoreferred to as being the most distal) from the robot base 3202. Theseries of arm segments 3212 ₁ through 3212 ₆ may form a kinematic chainin which movement of one arm segment (e.g., 3212 ₃) causes movement ofdownstream arm segments (e.g., 3212 ₄, 3212 ₅, 3212 ₆). The seriesconnection of the arm segments 3212 ₁-3212 ₆ may further define aproximal end or proximal direction and a distal end or distal direction.For example, each of the arm segments 3212 ₁-3212 ₆ may have arespective proximal end and a respective distal end. The proximal endmay be closer to the robot base 3202, while the distal end may befurther downstream, such that it is farther from the robot base 3202. Asan example, the arm segment 3212 ₃ may have a proximal end that isdirectly connected to the arm segment 3212 ₂, and may have a distal endthat is directly connected to the arm segment 3212 ₄. Further, if an armsegment (e.g., 3212 ₄, 3212 ₅, or 3212 ₆) is directly or indirectlyconnected to the distal end of another arm segment (e.g., 3212 ₃), theformer arm segment (e.g., 3212 ₄, 3212 ₅, or 3212 ₆) may be considereddistal to the latter arm segment (e.g., 3212 ₃). Conversely, if an armsegment (e.g., 3212 ₃, 3212 ₄, 3212 ₅) is directly or indirectlyconnected to a proximal end of another arm segment (e.g., 3212 ₆), theformer arm segment (e.g., 3212 ₃, 3212 ₄, 3212 ₅) may be consideredproximal to the latter arm segment (e.g., 3212 ₆). As another example,the arm segment 3212 ₃ may be considered a distal arm segment relativeto the arm segment 3212 ₂ and relative to the arm segment 3212 ₁, whilethe arm segments 3212 ₁ and 3212 ₂ may be considered proximal armsegments relative to the arm segment 3212 ₃.

In an embodiment, as illustrated in FIG. 3B, the robot 3200 may includea plurality of actuators 3330 ₁, 3330 ₂, 3330 ₃, 3330 ₄, and 3330 ₅(which may be embodiments of the actuators 1230 ₁ through 1230 _(n)) forcausing movement of the respective arm segments 3212 ₂-3212 ₆, or morespecifically for causing relative movement between respective pairs ofimmediately adjacent arm segments. In some instances, the plurality ofactuators 3330 ₁ through 3330 ₅ may be disposed at or near the joints3214 ₁ through 3214 ₅, respectively. In some implementations, theactuators 3330 ₁-3330 ₅ may be motors that are disposed around thejoints 3214 ₁-3214 ₅, and may output torque or force at the joints 3214₁-3214 ₅. The actuators 3330 ₁ through 3330 ₅ may each output arespective force or torque for moving a respective one of the armsegments 3212 ₂-3212 ₆ relative to an adjacent arm segment (or relativeto some other reference frame). As an example, the actuator 3330 ₃ maybe disposed at or near the joint 3214 ₃, which directly connects a pairof arm segments 3212 ₃, 3212 ₄. The actuator 3330 ₃ may output a torqueat the joint 3214 ₃, which may cause relative rotation between the pairof arm segments 3212 ₃, 3212 ₄. More specifically, the torque may causethe more distal arm segment 3212 ₄ of the pair of arm segments 3212 ₃,3212 ₄ to rotate relative to the more proximal arm segment 3212 ₃ of thepair of arm segments. Further, the arm segment 3212 ₄ may rotate aboutthe joint 3214 ₃. In an embodiment, the actuators 3330 ₁-3330 ₅ mayinclude motors (e.g., electrical and/or magnetic motors), pumps (e.g.,hydraulic pumps or pneumatic pumps), some other actuators, or acombination thereof.

In an embodiment, the robot 3200 may include a set of sensors forgenerating sensor data which may be used in performing robotcalibration. For instance, as illustrated in FIG. 3C, the robot 3200 mayinclude a first set of sensors 3222 ₁, 3222 ₂, 3222 ₃, 3222 ₄, and 3222₅ for generating actuation data and a second set of sensors 3224 ₁, 3224₂, 3224 ₃, 3224 ₄, and 3224 ₅ for generating movement data. Morespecifically, the first set of sensors 3222 ₁-3222 ₅ (which may be anembodiment of the sensors 1222 ₁ through 1222 _(n)) may each beconfigured to generate a respective set of actuation data that relatesto actuation of a respective arm segment of the plurality of armsegments 3212 ₂-3212 ₆. More particularly, the set of actuation data fora particular arm segment may measure a parameter indicative of force ortorque exerted on or experienced by the arm segment. For instance, thesensor 3222 ₁ may generate a first set of actuation data thatcorresponds to the actuation of the arm segment 3212 ₂ relative to thearm segment 3212 ₁ (or vice versa), while the sensor 3222 ₂ may generatea second set of actuation data that corresponds to the actuation of thearm segment 3212 ₃ relative to the arm segment 3212 ₂ (or vice versa).As another example, the sensor 3222 ₃ may generate a third set ofactuation data that corresponds to the actuation of the arm segment 3212₄ relative to the arm segment 3212 ₃ (or vice versa), while the sensor3222 ₄ may generate a fourth set of actuation data that corresponds tothe actuation of the arm segment 3212 ₅ relative to the arm segment 3212₄ (or vice versa).

In an embodiment, the sensors 3222 ₁-3222 ₅ may be or may include forcesensors or torque sensors that are each configured to directly measurean overall force or torque at the joints 3214 ₁-3214 ₅, or morespecifically the overall force or torque on the arm segments 3212 ₂-3212₆ connected at those joints. In an embodiment, the sensors 3222 ₁-3222 ₅may include electrical current sensors or voltage sensors configured tomeasure electrical current or electrical voltage. In one example, thesensors 3222 ₁-3222 ₅ may be electrical current sensors that areconfigured to measure respective amounts of electrical current flowingthrough the actuators 3330 ₁-3330 ₅. In this example, each of thesensors 3222 ₁-3222 ₅ may be electrically connected in series with arespective actuator (e.g., motor) of the actuators 3330 ₁-3330 ₅. Thesensor may measure an amount of electrical current flowing throughitself, which may be equal to or substantially equal to an amount ofelectrical current being provided to, drawn by, or otherwise flowingthrough the respective actuator. The amount of electrical currentflowing through the actuator may be indicative of an overall force oroverall torque at a corresponding joint at which the actuator islocated. In some instances, the joint, or the arm segment at the joint,may act as a mechanical load being driven by the actuator, and theamount of electrical current flowing through the actuator may depend onhow much voltage is being provided to activate the actuator and dependon a characteristic of the mechanical load, such as whether the load isbeing influenced by a torque other than that provided by the actuator(e.g., a torque caused by gravity), and/or whether motion of the load isbeing resisted by another torque (e.g., a resistance torque due tofriction). As an example, the sensor 3222 ₄ may measure an amount ofelectrical current flowing through the actuator 3330 ₄, which may beindicative of an overall force or torque at the joint 3214 ₄, or morespecifically an overall force or overall torque on the arm segment 3212₅ or the arm segment 3212 ₄ (for rotating the arm segment 3212 ₅ and/or3212 ₄ relative to a pivot point provided by the joint 3214 ₄).

In some instances, the actuation data generated by the sensors 3222₁-3222 ₅ may have values equal to how much electrical current is flowingthrough the corresponding actuators 3330 ₁-3330 ₅. In such instances,the computing system 1100 may be configured to calculate or otherwisedetermine values of overall torque or overall force based on theelectrical current values represented by the actuation data. In someinstances, the sensors 3222 ₁-3222 ₅ themselves may be configured tocalculate or otherwise determine the values of overall torque or overallforce, and to provide the torque values or force values as part of theactuation data. The calculation may be based on, e.g., a predefinedrelationship between electrical current and overall torque or overallforce, such as a relationship in which the overall torque is equal to orbased on a predefined constant (which may be referred to as a torqueconstant) multiplied by the electrical current. Thus, the computingsystem 1100 may be configured to perform the above calculation ofoverall torque by multiplying the torque constant by values ofelectrical current measured by the sensors 3222 ₁-3222 ₅. In someimplementations, the computing system 1100 (and/or the sensors 3222₁-3222 ₅) may have access to stored actuator information that mayprovide a value for the torque constant. For example, the torqueconstant may be a value that is stored in the non-transitorycomputer-readable medium 1120.

As stated above, the second set of sensors 3224 ₁-3224 ₅ in FIG. 3C maygenerate respective sets of movement data. In some implementations, thesecond set of sensors 3224 ₁-3224 ₅ may be disposed at or near thejoints 3214 ₁-3214 ₅, respectively. The respective sets of movement datagenerated by the sensors 3214 ₁-3214 ₅ may measure or otherwise describemovement of the arm segments 3212 ₂-3212 ₆, respectively, or morespecifically describe relative movement between respective pairs of armsegments connected by the joints 3214 ₁-3214 ₅. For example, the sensor3224 ₅ may measure or otherwise describe movement of the arm segment3212 ₆ relative to the joint 3214 ₅ and relative to the arm segment 3212₅, or more specifically describe relative movement between the pair ofimmediately adjacent arm segments 3212 ₆, 3212 ₅, which are directlyconnected by the joint 3214 ₅. In the above example, the arm segment3212 ₆ may be a more distal arm segment of the pair, while the armsegment 3212 ₅ may be a more proximal arm segment of the pair. Asanother example, the sensor 3224 ₄ may measure or otherwise describemovement of the arm segment 3212 ₅ relative to the joint 3214 ₄ andrelative to the arm segment 3212 ₄.

In an embodiment, the movement data may measure or otherwise describe anamount or rate of movement of an arm segment. The amount or rate ofmovement may be measured relative to a baseline position, such as aposition of a joint to which the arm segment is connected, a position ofthe arm segment before it began moving, a position of a proximal armsegment that is immediately adjacent to the moving arm segment, or someother baseline position (also referred to as a reference position). Insome instances, the amount of movement may refer to a position of thearm segment relative to the baseline position. If the movement involvesrotation of the arm segment, the amount of movement (or, morespecifically, the amount of rotation), may in some instances refer to arotational position of the arm segment (also referred to as angularposition, rotational displacement, or angular displacement). Therotational position of the arm segment may be measured relative to thebaseline position. As an example, FIG. 3D illustrates a situation inwhich the arm segment 3212 ₅ rotates relative to the joint 3214 ₄ andrelative to the arm segment 3212 ₄ about a rotational axis A thatextends through the joint 3214 ₄, wherein the joint 3214 ₄ may directlyconnect the two arm segments. In this example, the rotational positionof the arm segment 3212 ₅ may be indicated by an angle θ, which measureshow much the arm segment 3212 ₅ has rotated relative to a baselineposition. As stated above, various positions may be used as the baselineposition. In one example, as illustrated by a simplified diagram of thearm segments 3212 ₄ and 3212 ₅ in FIG. 3E, the baseline position may bea position 3510 of the arm segment 3212 ₅ (e.g., orientation of the armsegment) when it was stationary relative to the joint 3214 ₄ andrelative to the arm segment 3212 ₄, such that the angle θ for therotational position may measured from the position 3510. In FIG. 3E, thebaseline position 3510 may form an angle α (e.g., nonzero angle) with ahorizontal position. More specifically, an orientation associated withthe baseline position 3510 may form the angle α with a horizontalorientation, which may be an orientation that is perpendicular togravity. The angle α is discussed below in more detail.

In an embodiment, the movement data may measure or otherwise describe arate by which an arm segment (e.g., 3212 ₅) is rotating or otherwisemoving. The rate of movement may be measured relative to the baselineposition discussed above. In some instances, the rate of movement of onearm segment about a joint (e.g., 3214 ₄) may be measured relative tothat joint, or relative to an immediately adjacent arm segment (e.g.,3212 ₄). In some implementations, the rate of movement may refer to aspeed, velocity, or acceleration (e.g., rotational speed, rotationalvelocity, or rotational acceleration). In this example, rotational speedmay refer to a magnitude of the rotational velocity, while therotational velocity may further describe a direction of rotation (e.g.,clockwise or counterclockwise). In an embodiment, the computing system1100 may be configured to determine additional movement data based onmovement data generated by the sensors 3224 ₁-3224 ₅. For example, ifthe sensors 3224 ₁-3224 ₅ directly measure rotational position, andprovides that measurement in the movement data, the computing system1100 may be configured to determine rotational velocity and/orrotational acceleration based on the rotational position (e.g., as atime-based derivative of the rotational position). In an embodiment, thesecond set of sensors 3224 ₁-3224 ₅ may include angular displacementsensors, linear displacement sensors, other sensors configured togenerate movement data, or a combination thereof.

FIG. 4 depicts a flow diagram for an example method 4000 for determiningan estimated parameter value which describes a property (e.g., physicalproperty) of a robot (e.g., 1200/3200). In some scenarios, the method4000 may be performed as part of a robot calibration operation. Oneskilled in the art will realize that FIG. 4 illustrate one example of amethod for estimating a property of a robot, and that other examplemethods for estimating the property of a robot may have fewer steps,more steps, and/or different steps than the method 4000. In anembodiment, the method 4000 may be performed by the computing system1100, or more specifically by at least the processing circuit 1110 ofthe computing system 1100, such as when the processing circuit 1110 isexecuting instructions stored on the non-transitory computer-readablemedium 1120 (e.g., instructions for the robot calibration module 1122).

In an embodiment, some or all of the steps of method 4000 may beperformed multiple times, wherein the multiple times may correspond tomultiple iterations. While the discussion below regarding the steps ofmethod 4000 may illustrate one iteration of those steps, additionaliterations may be performed. Each iteration may be specific to aparticular arm segment, a particular joint, a particular pair of armsegments connected by the joint, and/or a particular physical propertythat is estimated (e.g., friction or center of mass) for that armsegment or joint. For example, one iteration or set of iterations may beperformed during one time period to estimate physical properties of onearm segment or one joint, while a next iteration or next set ofiterations may be performed during another time period to estimatephysical properties of another arm segment or another joint. In someinstances, one iteration may be performed to estimate one physicalproperty (e.g., a friction parameter estimate) associated with an armsegment or a joint, while another iteration may be performed to estimateanother physical property (e.g., center of mass) associated with the armsegment or joint. In an embodiment, the steps of method 4000 may beperformed during one time period to estimate a particular property(e.g., a property relating to friction) for an arm segment, joint, orother component or combination of components of the robot, and some orall of the steps may be repeated during another time period to estimateanother property (e.g., a property related to center of mass) for thatcomponent or combination of components.

In some implementations, the iterations may estimate properties for thearm segments or other components of the robot in a sequential manner.The sequential manner may involve, e.g., estimating a property orproperties for one component out of a series of components of the robot,before estimating the property or properties for a next component in theseries of components of the robot. For example, if the components of therobot are a series of arm segments (3212 ₁-3212 ₆) connected at aplurality of joints (3214 ₁-3214 ₅), the sequential manner may involvean upstream sequence in which an earliest iteration is used to estimatea property or properties (e.g., center of mass) of a most distal armsegment (e.g., 3212 ₆, which is furthest downstream in the series of armsegments) or most distal joint (e.g., 3214 ₅). After the earliestiteration, a next iteration may proceed upstream to estimate theproperty or properties (e.g., center of mass) for a proximal arm segment(e.g., 3212 ₅) or joint (e.g., 3214 ₄) that is immediately upstream ofthe most distal arm segment or most distal joint. The upstream sequencemay use the next iterations to proceed in the upstream direction, so asto estimate the property or properties for the remaining arm segments(e.g., 3212 ₄-3212 ₁) or remaining joints (e.g., 3214 ₃-3214 ₁) in asequence which proceeds from an arm segment (e.g., 3212 ₄) or joint(e.g., 3214 ₃) that is farthest from the robot base (e.g., 3202) towardsan arm segment (e.g., 3212 ₁) or joint (e.g., 3214 ₁) that is closest tothe robot base.

In an embodiment, the method 4000 may begin with or otherwise include astep 4002, in which the computing system 1100 selects at least one of afirst joint or a first arm segment. The first joint may be selected fromamong a plurality of joints of the robot arm, such as the plurality ofjoints 3214 ₁-3214 ₅ of the robot arm 3210 of FIGS. 3A-3C. Likewise, thefirst arm segment may be selected from among a plurality of arm segmentsof the robot arm, such as the plurality of arm segments 3212 ₁-3212 ₆ ofthe robot arm 3210. As an example, the first joint that is selected maybe, e.g., the joint 3214 ₄, or the first arm segment that is selectedmay be, e.g., the arm segment 3212 ₅. In this example, the first jointthat is selected connects the first arm segment to another arm segment,such as a second arm segment (e.g., the arm segment 3212 ₄) that isimmediately adjacent to the first arm segment. If the plurality of armsegments in this example are connected in series, the second arm segmentmay be, e.g., directly connected to a proximal end of the first armsegment. In other words, the first arm segment may be directly connectedto a distal end of the second arm segment, such that the first armsegment is distal to the second arm segment.

In an embodiment, the first joint or first arm segment may be selectedin step 4002 so as to estimate a physical property associated with thefirst joint or first arm segment. More particularly, the computingsystem 1100 may select the first arm segment (e.g., 3212 ₅) or the firstjoint (e.g., 3214 ₅) so as to cause motion at the first joint, or morespecifically relative motion between the first arm segment (e.g., 3212₅) and the second arm segment (e.g., 3212 ₄), which are connected by thefirst joint. As discussed below in more detail, the computing system1100 may receive sensor data associated with the motion, and use thesensor data to estimate the physical property associated with the firstjoint or first arm segment. As stated above, this example of step 4002may involve one iteration of step 4002, and may be used for estimating aphysical property of the first joint or first arm segment. In someimplementations, step 4002 may be repeated, so as to perform anotheriteration of step 4002. This other iteration may be used, e.g., toselect the second arm segment (e.g., 3212 ₄) or for a second joint(e.g., 3214 ₄), so as to estimate the physical property for the secondarm segment (e.g., 3212 ₄) or for the second joint (e.g., 3214 ₄).

In an embodiment, the computing system 1100 may select, as the firstjoint or first arm segment, any joint or arm segment of the robot arm(e.g., 1210/3210). In an embodiment, the computing system 1100 may instep 4002 select the first joint or the first arm segment according to apredefined sequence, such as the upstream sequence discussed above. Forexample, if multiple iterations of the step 4002 are performed, theupstream sequence may involve selecting a most distal arm segment ormost distal joint of the robot arm during an earliest iteration of themultiple iterations of step 4002. During a subsequent iteration of step4002, the upstream sequence may involve selecting another joint oranother arm segment which is immediately upstream relative to a joint orarm segment that was selected during a previous iteration.

In an embodiment, the computing system 1100 may select multiple joints,multiple arm segments, or multiple pairs of immediately adjacent armsegments connected by the multiple joints, so as to simultaneouslyestimate a property for the multiple joints or multiple arm segments.Estimating the property for the multiple joints or multiple arm segmentssimultaneously may involve directly actuating the multiple joints or themultiple arm segments simultaneously (e.g., by simultaneously activatingmultiple actuators), so that the multiple arm segments simultaneouslymove relative to the multiple joints, respectively.

In an embodiment, the computing system 1100 may, for each iteration ofstep 4002, select a single joint, a single arm segment, or a single pairof immediately adjacent arm segments connected by the joint, withoutselecting any other joint, arm segment, or pair of immediately adjacentarm segments, so as to directly actuate only the selected joint or armsegment. More particularly, the selection of multiple joints or multiplearm segments simultaneously may lead to simultaneous movement of themultiple arm segments, as discussed above. Such simultaneous movementmay create problems due to space constraints in an environmentsurrounding the arm segments or surrounding a robot formed by the armsegments. The space constraint may be due to, e.g., objects (e.g.,wires) or structures (e.g., ceiling beam) near the robot. In such anexample, the simultaneous movement of the multiple arm segments maypotentially create a range of motion for the robot that can lead tocollision with the objects or structures near the robot. Further, thesimultaneous movement of the multiple arm segments may generatevibration or other form of measurement noise. The measurement noise mayaffect an accuracy of sensor data. For instance, the movement of one armsegment may generate a vibration that propagates across a robot arm andaffect an ability to accurately measure the movement of another armsegment of the robot arm. In other words, the vibration caused bymovement of the former arm segment may introduce measurement noise intosensor data that measures movement of the latter arm segment. Thismeasurement noise arising from the simultaneous movement of multiple armsegments may affect an accuracy of the sensor data, and thus affect anaccuracy of respective estimates for a property of the multiple armsegments. Thus, selecting multiple joints or multiple arm segments tosimultaneously estimate a property of those joints or arm segments mayaffect an accuracy of resulting estimated values (also referred to asestimates).

Accordingly, as stated above, the computing system 1100 may, during step4002 or an iteration of step 4002, select a joint of a robot arm withoutselecting any other joint of the robot arm, or may select an arm segmentof the robot arm without selecting any other arm segment of the robotarm. More particularly, the computing system 1100 may, during a firstiteration of step 4002 (which may precede and/or follow otheriterations), select the first joint (e.g., 3214 ₄) discussed above fromamong the plurality of joints (e.g., 3214 ₁-3214 ₅) of the robot arm(e.g., 3210) without selecting any other joint of the plurality ofjoints, or may select the first arm segment (e.g., 3212 ₅) discussedabove from among the plurality of arm segments (e.g., 3212 ₁-3212 ₆)without selecting any other arm segment of the plurality of armsegments. Such a selection may be made as part of performing robotcalibration on a joint-by-joint basis or segment-by-segment basis. Forexample, such a basis of performing robot calibration may involvedirectly actuating a single joint or a single arm segment of a robot armduring a particular iteration or period of time, without directlyactuating any other joint or any other arm segment of the robot armduring that iteration or time period, such that only a single joint orsingle arm segment is directly actuated during an iteration orcorresponding time period of step 4002. In some instances, if the robotarm (e.g., 3210) has a plurality of respective actuators (e.g., 3330₁-3330 ₅ of FIGS. 3B and 3C) for outputting actuation at the pluralityof joints (e.g., 3330 ₁-3330 ₄), step 4002 may involve selecting a firstactuator (e.g., 3330 ₄) for activation during a particular time periodor iteration without selecting any other actuator of the plurality ofactuators for activation during that time period or iteration. Such aselection may cause the first actuator (e.g., 3330 ₄) to be activatedwithout causing activation of any other actuator of the plurality ofactuators during the time period or iteration. The selection may resultin the first actuator (e.g., 3330 ₄) being activated to actuate thefirst joint (e.g., 3214 ₄), or more specifically to output torque orforce at the first joint (e.g., 3214 ₄) so as to cause rotation at thefirst joint (e.g., 3214 ₄) during that time period or iteration. Therotation at the first joint (e.g., 3214 ₄) may refer to the first joint(e.g., 3214 ₄) being rotated, or refer to an arm segment (e.g., 3212 ₅)that is connected to the first joint being rotated relative to the firstjoint (3214 ₄) or relative to another arm segment (e.g., relative to armsegment 3212 ₄, which is connected to arm segment 3212 ₅ via the joint3212 ₄). Because no other actuator is selected for activation duringthis time period or iteration in this example, there is no rotation atany other joint of the plurality of joints during this time period oriteration. In other words, the first actuator (e.g., 3330 ₄) may beactivated during this time period or iteration to cause movement of thefirst arm segment (e.g., 3212 ₅) relative to the first joint (e.g., 3214₄) or relative to a second arm segment (e.g., 3212 ₄) immediatelyadjacent to the first arm segment (e.g., 3214 ₅), while there is nomovement of any other arm segment relative to a corresponding jointduring this time period or iteration, or while there is no relativemovement between any other pair of immediately adjacent arm segments.

Returning to FIG. 4 , the method 4000 may include a step 4004, in whichthe computing system 1100 may, during an iteration of the step, generatea set of one or more movement commands for causing relative movementbetween the first arm segment (e.g., 3212 ₅) and the second arm segment(e.g., 3212 ₄) via the first joint (e.g., 3214 ₄) selected in step 4002,or more specifically for causing the first arm segment to move relativeto the second arm segment via the first joint. In some instances, theone or more movement commands may be used for activating a firstactuator (e.g., 3330 ₄) of the plurality of actuators, and may beoutputted or otherwise communicated by the computing system 1100 to thefirst actuator (e.g., 3330 ₄) via the communication interface 1130 ofFIG. 2B. For example, if the first actuator (e.g., 3330 ₄) is a motor,the one or more movement commands may each be a motor command foractivating the motor. In some implementations, the one or more motorcommands may form or include one or more signals (e.g., a voltage signalor current signal) used to activate the motor. In some instances, theone or more commands may be capable of controlling a level or magnitudeat which the motor is activated, such as via a duration of the one ormore movement commands or via information encoded in the one or moremovement commands. The level or magnitude at which the motor isactivated may be used to control an amount of torque or force output bythe motor.

In an embodiment, when an actuator (e.g., 3330 ₄) receives the one ormore movement commands, the actuator may output motion at a joint, ormore specifically output a force or torque to cause motion at the joint.As stated above, motion at a joint may refer to the joint itself moving(e.g., rotating), or refer to one component of the joint moving relativeto another component of the joint, or refer to an arm segment movingrelative to the joint. For instance, FIG. 5A illustrates the actuator3330 ₄ outputting, in response to one or more movement commands, a firsttorque in a first direction (e.g., a counterclockwise direction) tocause the arm segment 3212 ₅ to rotate relative to the arm segment 3212₄ about the joint 3214 ₄ in the first direction from a starting position(e.g., baseline position) to an intermediate position. FIG. 5Billustrates the actuator 3330 ₄ outputting, response to the one or moremovement commands, a second torque in a second and opposite direction(e.g., clockwise direction) to cause the arm segment 3212 ₅ to thenrotate relative to the arm segment 3212 ₄ about the joint 3214 ₄ in thesecond direction from the intermediate position to an end position.

As stated above, the computing system 1100 may in an embodiment selectone joint or one arm segment to be directly actuated during a particulartime period or iteration without selecting any other joint or any otherarm segment to be directly activated during that time period oriteration. In some instances, the computing system 1100 may in step 4004generate the one or more movement commands such that the one or moremovement commands cause motion at the selected joint, or morespecifically motion of the selected arm segment relative to the joint(or relative to an immediately adjacent arm segment), without causingmotion at any other joint during that time period or iteration, or morespecifically without causing relative movement between any other pair ofimmediately adjacent arm segments (e.g., without causing movement of anyother arm segment relative to a corresponding joint). More particularly,the set of one or more movement commands that are generated in oneiteration may be for causing activation of the first actuator (e.g.,3330 ₄) without causing activation of any other actuator of theplurality of actuators in that iteration (e.g., without activatingactuators 3330 ₁-3330 ₃ and 3330 ₅). As discussed above, activating onlyone actuator at a time may better accommodate space constraints imposedby an environment in which a robot is located. More particularly,because the one or more movement commands in this example cause motionat only one joint at a time, the risk of collision with an object orstructure in the environment of the robot may be reduced. Activatingonly one actuator at a time may further improve an accuracy of the robotcalibration. That is, the one or more movement commands may cause oneactuator (e.g., 3330 ₄) to be activated to output motion at one jointwhile the other actuators remain deactivated, such that the deactivatedactuators are not outputting motion at their corresponding joints. Thelack of such motion at the other joints may reduce an amount ofvibrational noise or other noise, which may improve an accuracy by whichmotion is measured for the joint corresponding to the activatedactuator. The more accurate measurement may lead to more accurateresults from robot calibration.

In an embodiment, the computing system 1100 may generate the one or moremovement commands based on a movement profile, which may be or mayinclude information that describes an intended or planned characteristicof motion at the selected joint or motion of the selected arm segment(e.g., motion of the first arm segment relative to the second armsegment discussed above). In some instances, the movement profile may bea position profile, which specifies intended or planned values for aposition (e.g., rotational position) of the selected arm segment orselected joint. In some instances, the movement profile may be a speedprofile, velocity profile, and/or an acceleration profile, which maydescribe one or more intended or planned values for a speed, velocity,and/or acceleration (e.g., rotational speed, rotational velocity, orrotational acceleration) of the selected joint or selected arm segment.In some implementations, the values in the movement profile may be afunction of time, or more generally correspond to different points intime. In some implementations, the movement profile may include orrepresent a waveform that describes how position, speed, velocity,and/or acceleration of the motion is to vary over time. In someinstances, the speed profile may more specifically be a velocity profilethat specifies speed and direction of rotation.

In an embodiment, the one or more movement commands generated in step4004 may be used for determining a friction parameter estimateassociated with friction at a joint between two arm segments, such asthe first arm segment (e.g., 3212 ₅) and the second arm segment (e.g.,3212 ₄) selected during one iteration of step 4002. For instance, thefriction parameter may be a coefficient of viscous friction between thefirst arm segment and the second arm segment, or may be an amount ofstatic friction (also referred to as coulomb friction) between the twoarm segments. In some implementations, the one or more movement commandsmay be generated based on a movement profile that is intended togenerate sensor data which is optimized for estimating friction. Moreparticularly, the one or more movement commands may be generated basedon a speed profile that attempts to or is intended to cause a resultingmotion to undergo a wide range of values for speed or velocity. Moreparticularly, such a speed profile may enhance a measurement of certaintypes of friction, such as viscous friction between two components,which may have a magnitude that depends on speed of relative movementbetween two components. Thus, a speed profile which attempts or plans tocause the motion at a joint or arm segment to have a broad range ofvalues for speed or velocity may allow for measuring a broad range ofvalues for the viscous friction, which may improve an accuracy forestimating a characteristic of the viscous friction (e.g., forestimating a coefficient of viscous friction).

In an embodiment, the speed profile used for estimating the frictionparameter may include a plurality of values for speed (e.g., rotationalspeed) corresponding to different points in time within a particulartime period or iteration, such as a first time period in which the firstarm segment or first joint is selected. The plurality of values mayinclude at least one value that is equal to a predefined maximumoperation speed. The predefined maximum operation speed may be, e.g., arated maximum speed for an actuator (e.g., 3330 ₄) or for a robot arm(e.g., 3210) or arm segment being actuated. In some instances, thepredefined maximum operation speed may be provided by a manufacturer ofthe actuator, robot, or the robot arm, and may be stored in thenon-transitory computer-readable medium 1120 or elsewhere. In somescenarios, the predefined maximum operation speed may have beendetermined by the manufacturer as a maximum speed value at which theactuator or the robot arm can operate while a resulting movement isstill stable. In some instances, the predefined maximum operation speedmay have been determined by the manufacturer as a maximum speed value atwhich the actuator or the robot can operate for a sustained period oftime without creating a significant risk of damage to the actuator orthe robot arm.

As an example, FIGS. 6A-6C illustrate a movement profile that may beused for estimating a friction parameter. More particularly, FIG. 6Adepicts a position profile that describes rotational displacement of ajoint or arm segment, or more specifically rotational position of onearm segment (e.g., the first arm segment discussed above) relative to abaseline position. FIG. 6B depicts a corresponding speed profile, ormore specifically a velocity profile, that describes values ofrotational speed (or, more specifically, rotational velocity), of thearm segment. The values of the rotational speed may be relative to,e.g., a frame of reference provided by the baseline position, or a frameof reference provided by a corresponding joint or an adjacent armsegment (e.g., the first joint or the second arm segment discussedabove). FIG. 6C depicts a corresponding acceleration profile thatdescribes values of rotational acceleration of the arm segment relativeto the frame of reference. In the example of FIG. 6B, an actuator orrobot arm may have a predefined maximum operation speed of 150 degreesper second. As illustrated in FIG. 6B, the speed profile may attempt orplan to cause the rotational speed to reach the predefined maximumoperation speed at to and again at t_(c). As further discussed above,this speed profile may be used for estimating the friction parameter

In FIG. 6B, the illustrated values may describe rotational velocity.More specifically, they indicate that the rotational velocity may have afirst direction (e.g., counterclockwise direction) during a time rangefrom t_(a) to t_(c). This time range may correspond to, e.g., therotation illustrated in FIG. 5A. The values further indicate that therotational velocity may have a second direction (e.g., clockwisedirection) during a time range from t_(c) to t_(e), and may correspondto the rotation illustrated in FIG. 5B. As further illustrated in FIG.6B, the rotational velocity may begin decreasing in magnitude towardzero at time t_(b), and at time t_(d). These points in time maycorrespond to when an actuator (e.g., 3330 ₄) for causing the rotationswitches a direction of torque being outputted (e.g., from thecounterclockwise direction to the clockwise direction).

In an embodiment, the one or more movement commands generated in step4004 may be used for determining a center of mass (CoM) estimate for anarm segment, such as the first arm segment (e.g., 3212 ₅) selected inthe iteration discussed above for step 4002. In such an embodiment, theCoM estimate may be determined with a movement profile which is intendedto generate sensor data that is optimized for estimating CoM. In someimplementations, the movement profile used for estimating CoM may bedifferent than the movement profile used for estimating friction. Forinstance, a first speed profile or first acceleration profile may beused for determining a friction parameter estimate, while a second speedprofile or second acceleration profile may be used for determining a CoMestimate.

In an embodiment, the second speed profile or second accelerationprofile, which is used for estimating CoM, may attempt or plan to limita speed or acceleration of motion. More particularly, motion whichreaches a high speed or acceleration may generate an increased amount ofvibration, which may introduce measurement noise into sensor data. Thus,limiting speed or acceleration may reduce the amount of measurementnoise. Further, the CoM of an arm segment may in some instances dependon its rotational position rather than its rotational speed. Thus,limiting the speed or acceleration, even if it reduces a range of speedvalues achieved by the motion, may not adversely affect an accuracy ofthe CoM estimate. In one example, the first speed profile used forestimating friction may include a first plurality of values forrotational speed, while the second speed profile used for estimating CoMmay include a second plurality of values for rotational speed. Thesecond plurality of values may correspond to different points in timewithin a particular time period or iteration, and the second speedprofile may limit the speed such that all of the second plurality ofvalues are less than or equal to a predefined speed threshold. In oneexample, the predefined speed threshold may be, e.g., a predefinedpercentage (e.g., 10%) of the predefined maximum operation speed. FIGS.7A to 7C illustrate a position profile, a corresponding speed profile,and a corresponding acceleration profile which may be used forestimating CoM. More particularly, FIG. 7B illustrates an example of thesecond speed profile used to estimate CoM. In this example, all thespeed values in the speed profile may be less than or equal to a speedthreshold of 70 degrees per second. In some implementations, if anacceleration profile is used for estimating CoM, the accelerationprofile may cause a rate of movement (e.g., relative movement betweentwo adjacent arm segments) to be less than or equal to a predefinedacceleration threshold during an entirety of the time period in whichthe movement is occurring.

As stated above, one iteration of various steps of method 4000 may beused to estimate one property for a joint or arm segment, and anotheriteration of these steps may be performed to estimate another propertyfor the joint or arm segment. In one example, one iteration of thevarious steps (e.g., 4002, 4004) may generate a first set of one or moremovement commands for causing relative movement during a first timeperiod or first iteration between a pair of arm segments, such as thefirst arm segment (e.g., 3212 ₅) and the second arm segment (e.g., 3212₄) discussed above. The first set of one or move movement commands maybe generated based on the first movement profile discussed above todetermine, e.g., the friction parameter estimate. In this example,another iteration of the steps may be performed (e.g., steps 4002 and4004 may be repeated) to generate a second set of the one or moremovement commands to also cause relative movement between the first armsegment (e.g., 3212 ₅) and the second arm segment (e.g., 3212 ₄). Thesecond set of one or more movement commands may be generated based onthe second movement profile discussed above to determine, e.g., the CoMestimate.

In an embodiment, if the steps (e.g., 4002, 4004) of method 4000 areused to determine a CoM estimate, the computing system 1100 may beconfigured to determine whether movement of the selected joint orselected arm segment will occur about an axis that is vertical or tooclose to being vertical. In some instances, the axis may be a rotationalaxis, and the computing system 1100 may determine whether the rotationalaxis has an orientation that is vertical or too close to being vertical,wherein the vertical orientation may refer to an orientation along whichthe force of gravity is exerted. The orientation of the rotational axismay depend on a pose of the robot arm (e.g., 3210), or more specificallydepend on how the selected arm segment or selected joint is oriented.More particularly, estimating the CoM for an arm segment may in someimplementations rely on causing the CoM of the arm segment to movecloser to or farther away from a pivot point (e.g., joint 3214 ₄) duringrotation or other movement of the arm segment. If the rotational axisfor this movement is too vertical, the CoM of the arm segment may remainat a constant distance from the pivot point, which may interfere with anability to estimate the CoM. Thus, the computing system 1100 maydetermine whether the arm segment or the joint has an orientation whichcauses the rotational axis to have a vertical orientation or too closeto having the vertical orientation.

In an embodiment, the computing system 1100 may use an imaginary cone torepresent a range of orientations which are too close to a verticalorientation (i.e. an orientation that is parallel with the direction ofgravity), and determine whether the rotational axis is in the imaginarycone. More particularly, the imaginary cone may represents a range ofpossible orientations for the rotational axis, where the range ofpossible orientations include a vertical orientation, and include otherorientations which differ from the vertical orientation by no more thana predefined angle threshold. In other words, the other possibleorientations represented by the cone form angles with the verticalorientation, and these angles are less than or equal to the predefinedangle threshold. For instance, FIG. 8 illustrates an imaginary cone 5500which represents a vertical orientation V and a range of otherorientations which are within a predefined angle (e.g., 30 degrees) ofthe vertical orientation V. In practical terms, the predefined anglethreshold relative to the vertical orientation V (i.e. represented bythe imaginary cone 5500) can correspond to orientations of therotational axis in which it is difficult to distinguish the amount ofgravitational influence on the selected joint from noise contributionson the actual amplitude of the selected joint. In other words, theamount of gravitational influence may be too low to accuratelydistinguish from noise contributions on the selected joint when therotational axis is within the predefined angle threshold (i.e. withinthe cone). In this example, the computing system 1100 may determinewhether a rotational axis R for the rotation of a particular arm segmentis within the imaginary cone 5500. FIG. 8 depicts an example in whichthe rotational axis R is substantially horizontal, and thus is notwithin the imaginary cone 5500. If, in another example, the computingsystem 1100 determines that a rotational axis is in the imaginary cone,the computing system 1100 may output an indication of such adetermination (of the rotational axis being in the imaginary cone). Forexample, the indication may be a visual indication on a graphical userinterface. The indication may flag the resulting CoM estimate aspossibly having a sub-optimal level of accuracy, which may be used toevaluate whether to re-determine the CoM estimate using another pose forthe robot arm.

In an embodiment, the computing system 1100 may receive sensor data thatdescribes actuation and/or movement of an arm segment or joint, such asthe first joint or the first arm segment discussed above. For example,returning to FIG. 4 , the method 4000 may include a step 4006, in whichthe computing system 1100 receives a set of actuation data associatedwith a joint or arm segment that was selected in step 4002 (e.g., thefirst joint or the first arm segment). The set of actuation data may besensor data indicative of overall torque or overall force at the joint(e.g., 3214 ₄) in a time period or iteration during which the armsegment is moving relative to the joint or relative to an adjacent armsegment, or more specifically in the time period in which the relativemovement between the two arm segments (e.g., the first arm segment andthe second arm segment) is occurring. In some embodiments, the set ofactuation data may be generated by a sensor (e.g., the sensor 3222 ₄)associated with the selected joint (e.g., 3214 ₄) or arm segment (e.g.,3212 ₅), and may be communicated to the computing system 1100 via thecommunication interface 1130.

In an embodiment, the set of actuation data may directly indicate or bedirectly proportional to the overall force or overall torque at theselected joint (e.g., the first joint, such as 3212 ₄) or on the armsegment (e.g., the first arm segment, such as 3212 ₅), or may indirectlyindicate the overall force or overall torque. FIG. 9 illustrates anexample of the overall torque indicated by the actuation data. As statedabove, the sensor (e.g., 3222 ₄) for generating the actuation data mayin some instances be an electrical current sensor, while the set ofactuation data may be directly proportional to/directly measure ordescribe electrical current flowing through a corresponding actuator(e.g., 3330 ₄), wherein the electrical current is for causing themovement of the selected arm segment, such as movement of the first armsegment relative to the second arm segment. In such an example,computing system 1100 may be configured to calculate or otherwisedetermine the overall force or overall torque at the joint or on the armsegment based on values of the electrical current which are directlymeasured by the actuation data. As stated above, the overall torque orcurrent may be calculated by multiplying the values of the electricalcurrent by a predefined torque constant.

Returning to FIG. 4 , the method 4000 may include a step 4008, in whichthe computing system 1100 receives a set of movement data. The set ofmovement data may be sensor data indicative of an amount or rate ofmovement of a selected arm segment or selected joint, such as therelative movement between the first arm segment (e.g., 3212 ₅) and thesecond arm segment (e.g., 3212 ₄) during the first time period or firstiteration. In such an example, the amount of relative movement mayindicate a rotational position of the first arm segment relative to abaseline position provided by the second arm segment or the first joint(e.g., 3212 ₄), while the rate of relative movement may indicate arotational speed, rotational velocity, or rotational acceleration of thefirst arm segment relative to a frame of reference provided by thesecond arm segment or the first joint. In some instances, the set ofmovement data may directly measure the rotational speed, rotationalvelocity, or rotational acceleration. In some instances, the set ofmovement data may directly measure rotational position, and thecomputing system 1100 may be configured to calculate or otherwisedetermine the rotational speed, rotational velocity, or rotationalacceleration based on how the rotational position changes over time. Insome embodiments, the set of movement data may be generated by a sensor(e.g., the sensor 3224 ₄) associated with the selected joint (e.g., thejoint 3214 ₄).

In an embodiment, the set of movement data may include values whichdescribe movement that substantially matches the movement profile inFIGS. 6A through 7C. For example, if the set of movement data has valuesthat describe rotational position of an arm segment relative to abaseline position, the rotational position described by the values ofthe movement data may substantially match the positional profile in FIG.6A or FIG. 7A. Similarly, if the set of movement data has values whichdescribes rotational speed of an arm segment (e.g., the first armsegment, such as 3212 ₅) relative to a particular reference frame, thevalues of the movement data may describe movement that substantiallymatches the velocity profile in FIG. 6B or 7B.

Returning to FIG. 4 , the method 4000 may include a step 4010, in whichthe computing system 1100 determines at least one of a frictionparameter estimate or a center of mass (CoM) estimate for a selectedjoint or selected arm segment. Such a determination may be based on theset of actuation data and the set of movement data. As an example, oneiteration of step 4010 may involve determining a friction parameterestimate associated with friction between the first arm segment (e.g.,3212 ₅) and the second arm segment (e.g., 3212 ₄), while the center ofmass (CoM) estimate is associated with the first arm segment (e.g., 3212₅). In a more specific example, the friction parameter that is estimatedmay be a coefficient of viscous friction between the first arm segmentand the second arm segment, or an amount of static friction between thefirst arm segment and the second arm segment. Further in this example,the CoM estimate may be a value of a distance r between the first joint(which may act as a pivot point) and a CoM of the first arm segment. Asstated above, the steps of method 4000 may in some scenarios be repeatedso as to perform multiple iterations of the steps. In such instances,one iteration of steps 4002-4008 may be performed during a first timeperiod to determine the friction parameter estimate, and anotheriteration of these steps may be performed during a second time period(which may be before or after the first time period) to determine theCoM estimate.

FIGS. 10A-10D illustrate how a frictional parameter estimate may bedetermined based on a set of actuation data and a set of movement data.More particularly, FIGS. 10A and 10B are plots of combinations of: (i)values of overall torque and (ii) corresponding values of rotationalvelocity. In one iteration of step 4010, these velocity values may maydefine relative movement between the first arm segment (e.g., 3212 ₅)and the second arm segment (e.g., 3212 ₄). More particularly, eachcombination of values may include a first value which represents overalltorque at a joint (e.g., the first joint) at a respective point in time,and a second value which represents rotational velocity at that point intime. For example, the first value may indicate overall torque on, e.g.,the first arm segment relative to the second arm segment at a point intime, and the second value may indicate rotational velocity between thefirst arm segment and the second arm segment at that point in time. Theplotted combination of values in FIG. 10A may correspond to, e.g., therotation illustrated in FIG. 5A, in which the first arm segment (e.g.,3212 ₅) increases rotational speed in a first direction, and then stopsrotating. The plotted combination of values in FIG. 10B may correspondto the rotation illustrated in FIGS. 5A and 5B, in which the first armsegment (e.g., 3212 ₅) increases rotational speed in a first direction,stops rotating, increases rotational speed in a second direction, andthen stops rotating again.

In an embodiment, the overall torque represented by the actuation datamay be based on a contribution from the inertia of the actuator betweentwo arm segments, such as the first arm segment (e.g., 3212 ₅) and thesecond arm segment (e.g., 3212 ₄). In an embodiment, the overall torquemay be based on a contribution from friction. More particularly, theoverall torque may in some instances be described by the exampleequation:τ=contribution from actuator+contribution from gravity+contribution fromfriction  (1)

In the above equation, τ refers to the overall torque on the first joint(e.g., 3214 ₄), and may be equal to or derived from the actuation data.In this example, the contribution from the actuator may refer to atorque or force that is output by the actuator (e.g., 3330 ₄). Forinstance, in an iteration in which a friction parameter is beingestimated for the first arm segment (e.g., 3212 ₅) or the first joint(e.g., 3214 ₄) discussed above, this contribution from the actuator maybe represented by the term I{umlaut over (θ)}, in which {umlaut over(θ)} represents rotational acceleration of the first arm segmentrelative to the second arm segment, and in which I is a moment ofinertia of the first arm segment.

In an embodiment, the contribution from gravity in this iteration mayrefer to a torque caused by a weight of the downstream segments, such asthe first arm segment and the end effector (also referred to as endeffector apparatus), wherein the torque acts relative to a pivot pointprovided by the first joint. For instance, the contribution from gravitymay represented by the term mgr cos θ or mgr sin θ, in which θrepresents a rotational position of the downstream segments relative tothe gravity vector (or relative to a baseline position), while mgrepresents a weight contribution of the downstream segments. Morespecifically, m represents a mass of the downstream segments, while grepresents a rate of gravitational acceleration (e.g., 9.8 m/sec²). Inthis example, r represents a distance between a center of mass (CoM) ofthe first arm segment and the first joint. In some implementations, thevalue of the mass m or weight mg may be a known value that is stored inthe non-transitory computer-readable medium 1130.

In an embodiment, the contribution from friction may refer to how muchresistance is provided by friction against motion or a change in motionof the first arm segment relative to the second arm segment or relativeto the first joint. In some scenarios, the contribution from frictionmay be represented as s+b{dot over (θ)}, in which s represents an amountof static friction (also referred to as coulomb friction) between thefirst arm segment and the second arm segment, {dot over (θ)} representsa rotational velocity of the first arm segment relative to a frame ofreference provided by the second arm segment, and b represents acoefficient of viscous friction between the first arm segment and thesecond arm segment. In such a scenario, the static friction may remainconstant during relative rotation between the first arm segment and thesecond arm segment, while the viscous friction may increase in magnitudeas rotational velocity increases in magnitude.

In an embodiment, the computing system 1100 may be configured toeffectively extract or otherwise determine, from the actuation data, thecontribution from friction, which may also be referred to as a frictioncomponent of the overall torque. For instance, FIGS. 10C and 10Dillustrate combination of values that represent, for various points intime, a friction component of overall torque. These values for thefrictional component of overall torque may be combined with values ofrotational velocity. In some instances, the computing system 1100 may beconfigured to extract the friction component of the overall torque bysubtracting, from the overall torque indicated by the actuation data,the contribution of the actuator and the contribution of gravity, ifthose contributions are known. For instance, if the computing system1100 has performed a previous iteration of steps 4002-4010 to determinean estimate for I (representing the moment of inertia) or an estimatefor r (representing the CoM), the computing system 1100 may use thoseestimates, as well as values of θ, {dot over (θ)}, {umlaut over (θ)}provided by or derived from the movement data, to determine thecontribution from the actuator (which may be estimated as I{umlaut over(θ)}) and the contribution from gravity (which may be estimated as mgrcos θ). The computing system 1100 may then subtract out the contributionof the actuator and the contribution of gravity from the overall torqueto extract the contribution of friction. In some instances, thecomputing system 1100 may effectively extract the friction component bysolving a set of simultaneous equations that relate overall torque tofriction, as discussed below in more detail.

As illustrated in FIG. 10D, the computing system 1100 may be configuredto use a relationship between the friction component of the overalltorque (which may be extracted from the actuation data) and therotational velocity (which may be provided by or extracted from themovement data) to determine a friction parameter estimate. Moreparticularly, the friction between two arm segments may include staticfriction and viscous friction. As discussed above, the static frictionmay in some instances be represented as a constant (s) while the viscousfriction may be represented as being a linear function (b{dot over (θ)})of rotational velocity, such that the friction component of the overalltorque may be approximated as s+b{dot over (θ)}. In such instances, thecomputing system 1100 may apply a linear fit to the combination ofvalues in FIG. 10D, which represent the friction component of overalltorque. More particularly, the computing system 1100 may determine aline 7500A and/or 7500B which fits through or otherwise approximates thecombination of values of FIGS. 10C and 10D. The line 7500A or 7500B mayrepresent the above expression of s+b{dot over (θ)}. More particularly,the computing system 1100 may determine the coefficient of viscousfriction (b) to be equal to or based on a slope of the line 7500A or7500B (or as an average of the respective slopes of those lines), anddetermine the static friction (s) to be equal to or based on a height ofthe line 7500A or 7500B (e.g., equal to the Y-intercept 7501A or 7501B,or an average of their magnitudes).

As stated above, the computing system 1100 may be configured toeffectively extract the friction component by solving a set ofsimultaneous equations that relate overall torque to friction. As statedabove, the overall torque τ may be based on a contribution from theactuator, a contribution from gravity, and a contribution from friction.In one example, the overall torque may be based on the more specificrelationship below:τ=[I*{umlaut over (θ)}]+[mgr*sin(θ+α)]+[s*Sign({dot over (θ)})]+[b*{dotover (θ)}] orτ=[I*{umlaut over (θ)}]+[mgr*cos(θ+α)]+[s*Sign({dot over (θ)})]+[b*{dotover (θ)}]

In this example, values for the parameter T may be provided by orderived from the actuation data. The parameters θ, {dot over (θ)},{umlaut over (θ)} (which may represent rotational position, rotationalvelocity, and rotational acceleration, respectively) may be provided byor derived from the movement data. As further discussed above, theparameter I represents a moment of inertia, the parameter mg representsa weight of an arm segment (e.g., the first arm segment), the parameterr represents a distance between a CoM of an arm segment and a joint towhich the arm segment is connected (e.g., the first joint), theparameter s represents an amount of static friction, and the parameter brepresents a coefficient of viscous friction. In the above example, αmay be an angle between a baseline position and a horizontalorientation, as illustrated in FIG. 3E. Further, the Sign({dot over(θ)}) function may be used to represent the static friction having adirection which is opposite a direction of motion. More particularly,the Sign({dot over (θ)}) function may have a value of 1 when {dot over(θ)} is positive, a value of −1 when {dot over (θ)} is negative, and avalue of 0 when {dot over (θ)} is 0.

In an embodiment, the computing system 1100 may be configured to use theabove relationship to generate a set of equations corresponding todifferent points in time or, more generally, to different combinationsof: (i) torque value and (ii) position, velocity, or acceleration value.For instance, the computing system 1100 may be configured to generatethe following set of equations, which may be represented as a matrix:

$\begin{bmatrix}\tau_{1} \\\tau_{2} \\\vdots \\\tau_{n}\end{bmatrix} = \begin{bmatrix}{\left\lbrack {I{\overset{¨}{\theta}}_{1}} \right\rbrack + \left\lbrack {{CoM}*{\sin\left( {\theta_{1} + \alpha} \right)}} \right\rbrack + \left\lbrack {s*{{Sign}\left( {\overset{.}{\theta}}_{1} \right)}} \right\rbrack + \left\lbrack {b*{\overset{.}{\theta}}_{1}} \right\rbrack} \\{\left\lbrack {I{\overset{¨}{\theta}}_{2}} \right\rbrack + \left\lbrack {{CoM}*{\sin\left( {\theta_{2} + \alpha} \right)}} \right\rbrack + \left\lbrack {s*{{Sign}\left( {\overset{.}{\theta}}_{2} \right)}} \right\rbrack + \left\lbrack {b*{\overset{.}{\theta}}_{2}} \right\rbrack} \\\vdots \\{\left\lbrack {I{\overset{¨}{\theta}}_{n}} \right\rbrack + \left\lbrack {{CoM}*{\sin\left( {\theta_{n} + \alpha} \right)}} \right\rbrack + \left\lbrack {s*{{Sign}\left( {\overset{.}{\theta}}_{n} \right)}} \right\rbrack + \left\lbrack {b*{\overset{.}{\theta}}_{n}} \right\rbrack}\end{bmatrix}$

In the above example, τ₁, τ₂, . . . τ_(n) may correspond to differenttorque values that are provided by or derived from the actuation data.Further, {umlaut over (θ)}₁, {umlaut over (θ)}₂, . . . {umlaut over(θ)}_(n) may correspond to different acceleration values that areprovided or derived from the movement data, and which correspond to τ₁,τ₂, . . . τ_(n), respectively. Similarly, {dot over (θ)}₁, {dot over(θ)}₂, . . . {dot over (θ)}_(n) may correspond to different velocityvalues that are provided by or derived from the movement data, and θ₁,θ₂, . . . θ_(n) may correspond to different position values that areprovided by or derived from the movement data, wherein these values ofposition or velocity also correspond to τ₁, τ₂, . . . τ_(n). In anembodiment, these values may correspond to different points in time. Forinstance, τ₁, θ₁, {umlaut over (θ)}₁, and {dot over (θ)}₁ may correspondto a measurement made by a sensor(s) at first point in time (e.g., t_(a)in FIGS. 10A and 10B), while τ₂, θ₂, {umlaut over (θ)}₂, and {dot over(θ)}₂ may correspond to a measurement made by the sensor(s) at a secondpoint in time (e.g., t_(b) in FIGS. 10A and 10B).

In an embodiment, the computing system 1100 may be configured to solvethe above set of simultaneous equations to determine respective valuesfor s, b, I, m, r, and/or α. Solving the equations may involvedetermining respective values for s, b, I, m, r, and/or α which satisfyor approximately satisfy the above equations. In some implementations,the computing system 1100 may be configured to apply a least squaresfitting method to determine respective values for the above parameterswhich, e.g., minimize an amount of error between the measured torquevalues τ₁, τ₂, . . . τ_(n) from the actuation data and predicted torquevalues (also referred to as torque prediction values, or a prediction oftorque values) calculated using the movement data and estimated valuesfor the above parameters.

In an embodiment, the computing system 1100 in step 4010 may determinethe frictional parameter estimate based on the technique discussedabove. For instance, the frictional parameter estimate may be a value ofthe parameter s discussed above, which represents static friction,and/or may be a value of the parameter b discussed above, whichrepresents a coefficient of viscous friction. In some instances, asstated above, the actuation data, movement data, and/or other sensordata used to determine the friction parameter estimate may have beengenerated in a manner that is optimal for estimating friction. Forinstance, the sensor data may have been generated based on a speedprofile which attempts to cause a rotational speed of an arm segment(relative to a frame of reference provided by another arm segment) toreach a predefined maximum operation speed at least once during aparticular iteration of time period.

In the above example, the computing system 1100 determines not only anestimate for a friction parameter (e.g., s or b), but also determines anestimate for the parameter r, which may represent a center of mass (CoM)for an arm segment. In some instances, this estimate may be used by thecomputing system as a result of robot calibration. In other instances,the computing system 1100 may treat this estimate as a by-product ofestimating friction, and may discard the CoM estimate after theiteration is over. In such instances, the computing system 1100 mayperform another iteration which may be more optimized for estimatingCoM. More particularly, the sensor data used to estimate friction may insome instances be sub-optimal for estimating CoM. In such instances, thecomputing system 1100 may perform another iteration of steps 4002-4010(or just steps 4004-4010) to obtain a set of sensor data which is moreoptimal for estimating CoM. For example, this set of actuation data andmovement data may have been generated with a speed profile whichattempts to limit speed or rotation below a predefined threshold, asdiscussed above.

In an embodiment, the computing system 1100 may use the above techniqueof solving simultaneous equations to determine a CoM estimate in oneiteration of step 4010. In such an iteration, the computing system 1100may also determine an estimate for a friction parameter (e.g., s or b).The computing system 1100 may use such an estimate as a result of robotcalibration, or may treat the estimate as a by-product of estimatingCoM, and discard the estimate of the friction parameter after theiteration is over.

In an embodiment, the computing system 1100 may use the above techniqueor some other technique to effectively extract, from the actuation data,a component of the overall torque that is due to a weight of an armsegment (e.g., the first arm segment), or more specifically due to aneffect of gravity on a CoM of the arm segment. In one example, thiscomponent may be expressed as mgr cos (θ+α), and may be obtained by,e.g., subtracting, from the overall torque, a contribution of theactuator (e.g., I{umlaut over (θ)}) and a contribution of friction(e.g., s+b{dot over (θ)}). For example, FIG. 11A provides an example ofvalues which represent a gravity component of overall torque, which maybe approximated as an effect of gravity on the CoM of an arm segment.FIG. 11B illustrates a sinusoidal fit, or more specifically a sinusoidalcurve which the the computing system 1100 is using to fit the values inFIG. 11A. In some instances, the computing system 1100 may determine theCoM estimate based on an amplitude and phase shift of the sinusoidalcurve. More particularly, the computing system 1100 may be configured todetermine a value of mgr based on an amplitude of the sinusoidal curve,while the parameter α may affect a phase shift of the sinusoidal curve.In this example, the computing system 1100 may divide the amplitude ofthe sinusoidal curve by the weight of the arm segment to determine r,which may represent the CoM of the arm segment.

In an embodiment, when determining an estimate of CoM for a particulararm segment based on actuation data, the computing system 1100 may beconfigured to take into account an influence that downstream armsegments (e.g., more distal arm segments) may have on the actuation dataor other sensor data. More particularly, as discussed above with respectto FIGS. 3A-3C, 5A, and 5B, robot calibration may be performed for arobot arm which has a plurality of arm segments connected as a series ofarm segments, in which some arm segments (e.g., 3212 ₁-3212 ₅) have oneor more arm segments (e.g., 3212 ₆) that are further downstream or thatare more distal. For example, the first arm segment (e.g., 3212 ₅)discussed above may in some instances be connected to one or more distalarm segment (e.g., 3212 ₆), which are downstream relative to the firstarm segment (e.g., 3212 ₅). A weight from the one or more distal armsegments (e.g., 3212 ₆) may contribute to the overall torque at thefirst joint (e.g., 3214 ₄), and thus may influence sensor data used todetermine the CoM estimate for the first arm segment (e.g., 3212 ₅). Insuch a situation, the computing system 1100 may determine a CoM estimateassociated with the one or more distal arm segments (e.g., 3212 ₆)before determining a CoM estimate of the first arm segment (e.g., 3212₅). In this manner, when the computing system 1100 is determining theCoM estimate associated with the first arm segment (e.g., 3212 ₅), itmay be able to use the earlier-determined CoM estimate associated withthe one or more distal arm segments (e.g., 3212 ₆) to determine how muchthe sensor data is influenced by the weight of the one or more distalarm segments, so as to remove or compensate for that influence.

As an example, the computing system 1100 may determine an initial CoMestimate associated with the first arm segment (e.g., 3212 ₅) based on aset of actuation data and a set of movement data received in step 4006and 4008, which may have been generated during movement of the first armsegment. The initial CoM estimate may be influenced by a weight from theone or more distal arm segments (e.g., 3212 ₆). Thus, the computingsystem 1100 may determine, based on the CoM estimate associated with theone or more distal arm segments (e.g., 3212 ₆), an adjustment forremoving an influence that the one or more distal arm segments (e.g.,3212 ₆) have on the initial CoM estimate. The adjustment may cause theinitial CoM estimate to be shifted closer to the first joint. Thecomputing system 1100 may apply the adjustment to the initial CoMestimate to generate an adjusted CoM estimate associated with the firstarm segment (3212 ₅). The CoM estimate that is determined for robotcalibration in step 4010 for the first arm segment (e.g., 3212 ₅) may beequal to or based on the adjusted CoM estimate.

In an embodiment, when the computing system 1100 in one iteration ofstep 4010 has determined a CoM estimate for an arm segment (e.g., thefirst arm segment), the computing system 1100 may then use the CoMestimate for the arm segment in a next iteration to determine a CoMestimate for an upstream arm segment (e.g., the second arm segmentdiscussed above). In one particular example, the computing system 1100may perform an earliest iteration or set of iterations of steps ofmethod 4000 to determine a CoM estimate for a joint (e.g., 3214 ₅)and/or arm segment (e.g., 3212 ₆) that is most distal or furthestdownstream in a robot arm (e.g., 3210). The computing system 1100 mayperform subsequent iterations or sets of iterations of the steps ofmethod 4000 by proceeding in an upstream direction. More particularly,the computing system 1100 may be configured to use a next iteration ofsteps 4002-4010 to determine a CoM estimate for an arm segment which isimmediately upstream of the most distal arm segment. In this iteration,the computing system may be configured to determine the CoM estimate forthis upstream arm segment by removing an influence from the one or moredownstream arm segments. This influence from the one or more downstreamarm segments may be approximated by the CoM of the most distal armsegment, which may have been determined in a previous iteration of steps40002-4010.

In an embodiment, when the computing system 1100 is performing aniteration of step 4010 to determine a CoM estimate for a particular armsegment, it may be configured to determine a net influence or netcontribution from k downstream arm segments, or more specifically a netinfluence from respective weights of the downstream arm segments, onactuation data and/or on an initial CoM estimate for an arm segment orcurrent joint being estimated in a particular iteration. For instance,the net influence may be determined based on the formula:

$\sum\limits_{x = 1}^{k}{{mass}\mspace{14mu}{arm}\mspace{14mu}{segment}_{x}*\left( {{distance}\mspace{14mu}{between}\mspace{14mu}{arm}\mspace{14mu}{segment}_{x}\mspace{14mu}{and}\mspace{14mu}{current}\mspace{14mu}{joint}} \right)*g}$

In an embodiment, the computing system 1100 may in step 4010 determinean estimate for a moment of inertia associated with an arm segment. Forexample, the computing system 1100 may be configured to solve theequations determined above to determine a value for I, which representsthe moment of inertia.

As stated above, the method 4000 may have an embodiment in which some orall of steps 4002-4010 are performed multiple times, over multipleiterations or multiple time periods. For instance, one iteration may beperformed to cause relative movement between the first arm segment(e.g., 3212 ₅) and the second arm segment (e.g., 3212 ₄) to determine afriction parameter estimate, while another iteration may be performed tocause additional relative movement between the first arm segment and thesecond arm segment to determine a CoM estimate. While the abovediscussion illustrates the steps 4002-4010 with respect to the first armsegment (e.g., 3212 ₅) and the first joint (e.g., 3212 ₄), otheriterations of the steps 4002-4010 may be performed with respect to otherarm segments or other joints.

In an embodiment, the method 4000 may include a step which may beperformed after performing robot calibration. The step may involveoutputting a subsequent set of one or more movement commands for causingsubsequent robot arm movement. In one example, the subsequent set of oneor more movement commands may be generated based on the frictionparameter estimate(s) and/or the CoM estimate(s) determined from therobot calibration. For example, the subsequent set of one or moremovement commands may be based on the friction parameter estimate and/orCoM estimate associated with the first arm segment or first jointdiscussed above. In one example, the friction parameter estimate and/orCoM estimate may be used to update a torque model and/or friction model,which may be used by the computing system 1100 to generate thesubsequent set of one or more movement commands. In some instances, thecomputing system may be configured to generate the subsequent set of oneor more movement commands so that they cause one or more actuators(e.g., 3330 ₁-3330 ₅) to generate respective amounts of force or torquewhich compensate for friction between various components of the robotarm (e.g., 3210) and which account for respective locations of CoM forthose components.

Additional Discussion of Various Embodiments

Embodiment 1 relates to a computing system comprising a communicationinterface and at least one processing circuit. The communicationinterface is configured to communicate with a robot having a robot armthat includes a plurality of arm segments which are movably connected toeach other at a plurality of joints. The at least one processing circuitis configured, when the computing system is in communication with therobot, to perform a method, such as by executing instructions on anon-transitory computer-readable medium. The method includes selectingat least one of: (i) a first joint from among the plurality of jointswithout selecting any other joint of the plurality of joints, or (ii) afirst arm segment from among the plurality of arm segments withoutselecting any other arm segment of the plurality of arm segments,wherein the first joint connects the first arm segment to a second armsegment that is immediately adjacent to the first arm segment. Themethod further includes outputting a set of one or more movementcommands for causing robot arm movement that includes relative movementbetween the first arm segment and the second arm segment via the firstjoint; receiving a set of actuation data associated with the first jointor the first arm segment, wherein the set of actuation data is sensordata indicative of overall torque or overall force at the first joint ina time period during which the relative movement between the first armsegment and the second arm segment is occurring; receiving a set ofmovement data associated with the first joint or the first arm segment,wherein the set of movement data is sensor data indicative of an amountor rate of the relative movement between the first arm segment and thesecond arm segment during the time period; and determining, based on theset of actuation data and the set of movement data, at least one of: (i)a friction parameter estimate associated with friction between the firstarm segment and the second arm segment, or (ii) a center of mass (CoM)estimate associated with the first arm segment; outputting a subsequentset of one or more movement commands for causing subsequent robot armmovement, wherein the subsequent set of one or more movement commandsare generated based on the at least one of: (i) the friction parameterestimate or (ii) the CoM estimate associated with the first arm segment.

Embodiment 2 includes the computing system of embodiment 1. In thisembodiment, the set of one or more movement commands are for causing therelative movement between the first arm segment and the second armsegment without causing relative movement between any other pair ofimmediately adjacent arm segments of the plurality of arm segments.

Embodiment 3 includes the computing system of embodiment 2. In thisembodiment, the at least one processing circuit is configured, when therobot in communication with the computing system has a plurality ofrespective actuators for outputting actuation at the plurality ofjoints, to select a first actuator for activation from among theplurality of actuators without selecting any other actuator of theplurality of actuators for activation, wherein the first actuatorcorresponds with the first joint or the first arm segment. Further inthis embodiment, the set of one or more movement commands generated bythe at least one processing circuit are for causing activation of thefirst actuator without causing activation of any other actuator of theplurality of respective actuators.

Embodiment 4 includes the computing system of embodiment 3. In thisembodiment, the set of one or more movement commands are for causingrotation at the first joint without causing rotation at any other jointof the plurality of joints.

Embodiment 5 includes the computing system of any one of embodiments1-4. In this embodiment, the time period during which the relativemovement between the first arm segment and the second arm segment occursis a first time period. Further, this embodiment includes the followingfeatures: the set of one or more movement commands is a first set of oneor more movement commands, and is for causing the relative movementbetween the first arm segment and the second arm segment during thefirst time period to have a first speed profile; the set of actuationdata is a first set of actuation data associated with the first joint orthe first arm segment; the set of movement data is a first set ofmovement data associated with the first joint or the first arm segment,wherein both the first set of actuation data and the first set ofmovement data are associated with the first speed profile. Further inthis embodiment, the at least one processing circuit is configured todetermine the friction parameter estimate based on the first set ofactuation data and the first set of movement data, and is furtherconfigured to perform the following: outputting a second set of one ormore movement commands for causing additional relative movement betweenthe first arm segment and the second arm segment via the first joint,and for causing the additional relative movement to have a second speedprofile different than the first speed profile; receiving a second setof actuation data associated with the first joint or first arm segment,wherein the second set of actuation data is sensor data indicative ofoverall torque or overall force at the first joint during a second timeperiod during which the additional relative movement is occurring;receiving a second set of movement data associated with the first jointor first arm segment, wherein the second set of movement data is sensordata indicative of an amount or rate of the additional relative movementduring the second time period; determining the CoM estimate based on thesecond set of actuation data and the second set of movement data.Further in this embodiment, the subsequent set of one or more movementcommands are generated based on the friction parameter estimate and theCoM estimate.

Embodiment 6 includes the computing system of embodiment 5. In thisembodiment, the first speed profile includes a first plurality of valuesfor rotational speed corresponding to different points in time withinthe first time period, wherein at least one of the first plurality ofvalues is equal to a predefined maximum operation speed. Further in thisembodiment, the second speed profile includes a second plurality ofvalues for rotational speed corresponding to different points in timewithin the second time period, wherein all of the second plurality ofvalues are less than or equal to a predefined speed threshold.

Embodiment 7 includes the computing system of any one of embodiments1-5. In this embodiment, the set of one or more movement commands aregenerated for causing the rate of the relative movement to reach apredefined maximum operation speed during at least a portion of the timeperiod, such that at least a portion of the set of actuation data and atleast a portion of the set of movement data corresponds to thepredefined maximum operation speed. Further in this embodiment, the atleast one processing circuit is configured to determine the frictionparameter estimate based on the set of actuation data and the set ofmovement data.

Embodiment 8 includes the computing system of embodiment 7. In thisembodiment, the friction parameter estimate is an estimate of acoefficient of viscous friction, or is an estimate of coulomb friction.

Embodiment 9 includes the computing system of any one of embodiments1-5. In this embodiment, the set of one or more movement commands aregenerated for causing the rate of the relative movement to be less thanor equal to a predefined acceleration threshold during an entirety ofthe time period in which the relative movement is occurring. Further inthis embodiment, the at least one processing circuit is configured todetermine the CoM estimate based on the set of actuation data and theset of movement data.

Embodiment 10 includes the computing system of any one of embodiments1-9. In this embodiment, the at least one processing circuit isconfigured, when the set of one or more movement commands are forcausing relative rotation between the first arm segment and the secondarm segment via the first joint, to perform the following: determiningwhether a rotational axis for the relative rotation is within animaginary cone which represents a range of orientations for therotational axis, wherein the range of orientations include a verticalorientation, and wherein respective angles between the verticalorientation and all other orientations in the range of orientations isless than or equal to a predefined angle threshold; and outputting anindication of whether the rotational axis is within the imaginary cone.

Embodiment 11 includes the computing system of any one of embodiments1-10. In this embodiment, the at least one processing circuit isconfigured, when the plurality of arm segments are connected as a seriesof arm segments, and include one or more distal arm segments downstreamof the first arm segment, to determine a CoM estimate associated withthe one or more distal arm segments. Further in this embodiment, the CoMestimate associated with the first arm segment is determined based onthe CoM estimate associated with the one or more distal arm segments.

Embodiment 12 includes the computing system of embodiment 11. In thisembodiment, the at least one processing circuit is configured todetermine the CoM estimate associated with the first arm segment by:determining an initial CoM estimate associated with the first armsegment based on the set of actuation data and the set of movement data;determining, based on the CoM estimate associated with the one or moredistal arm segments, an adjustment for removing an influence that theone or more distal arm segments have on the initial CoM estimate; andapplying the adjustment to the initial CoM estimate to generate anadjusted CoM estimate associated with the first arm segment, wherein theCoM estimate associated with the first arm segment is equal to or basedon the adjusted CoM estimate.

Embodiment 13 includes the computing system of embodiment 12. In thisembodiment, the at least one processing is configured, when the secondarm segment is upstream of the first arm segment, to determine a CoMestimate associated with the second arm segment based on the CoMestimate associated with the first arm segment.

Embodiment 14 includes the computing system of any one of embodiments1-13. In this embodiment, the at least one processing circuit is furtherconfigured to determine a range of motion for the relative movementbetween the first arm segment and the second arm segment, wherein theset of one or more movement commands are generated based on the range ofmotion.

Embodiment 15 includes the computing system of any one of embodiments1-14. In this embodiment, the at least one processing circuit isconfigured, when the set of actuation data measures electrical currentflowing through an actuator for causing the relative movement betweenthe first arm segment and the second arm segment, to determine theoverall torque at the first joint based on the electrical current.

Embodiment 16 includes the computing system of any one of embodiments1-15. In this embodiment, the at least one processing circuit is furtherconfigured to determine, based on the set of actuation data and the setof movement data, a moment of inertia estimate associated with the firstarm segment.

Embodiment 17 includes the computing system of any one of embodiments1-16. This embodiment has the following features: the time period duringwhich the relative movement between the first arm segment and the secondarm segment occurs is a first time period; the set of actuation dataassociated with the first joint or the first arm segment is a first setof actuation data, and the set of movement data associated with thefirst joint or the first arm segment is a first set of movement data;the set of one or more movement commands is a first set of one or moremovement commands; the friction parameter estimate associated withfriction between the first arm segment and the second arm segment is afirst friction parameter estimate; the CoM estimate associated with thefirst arm segment is a first CoM estimate. In this embodiment, the atleast one processing circuit is configured to perform the following:selecting at least one of: (i) a second joint from among the pluralityof joints without selecting any other joint of the plurality of joints,or (ii) the second arm segment from among the plurality of arm segmentswithout selecting any other arm segment of the plurality of armsegments, wherein the second joint connects the second arm segment to athird arm segment that is immediately adjacent to the second armsegment; outputting a second set of one or more movement commands forcausing robot arm movement that includes relative movement between thesecond arm segment and the third arm segment via the second joint;receiving a second set of actuation data and a second set of movementdata, wherein the second set of actuation data is sensor data indicativeof overall torque or overall force at the second joint during a secondtime period during in which the relative movement between the second armsegment and the third arm segment is occurring, and wherein the secondset of movement data is sensor data indicative of an amount or rate ofthe relative movement between the second arm segment and the third armsegment during the second time period; determining, based on the secondset of actuation data and the second set of movement data, at least oneof: (i) a second friction parameter estimate, or (ii) a second CoMestimate, wherein the second friction parameter estimate is associatedwith friction between the second arm segment and the third arm segment,and the second CoM estimate is indicative of a CoM of the second armsegment. Further in this embodiment, the subsequent set of one or moremovement commands are generated further based on the at least one of:(i) the second friction parameter estimate or (ii) the second CoMestimate.

It will be apparent to one of ordinary skill in the relevant arts thatother suitable modifications and adaptations to the methods andapplications described herein may be made without departing from thescope of any of the embodiments. The embodiments described above areillustrative examples and it should not be construed that the presentinvention is limited to these particular embodiments. It should beunderstood that various embodiments disclosed herein may be combined indifferent combinations than the combinations specifically presented inthe description and accompanying drawings. It should also be understoodthat, depending on the example, certain acts or events of any of theprocesses or methods described herein may be performed in a differentsequence, may be added, merged, or left out altogether (e.g., alldescribed acts or events may not be necessary to carry out the methodsor processes). In addition, while certain features of embodiments hereofare described as being performed by a single component, module, or unitfor purposes of clarity, it should be understood that the features andfunctions described herein may be performed by any combination ofcomponents, units, or modules. Thus, various changes and modificationsmay be affected by one skilled in the art without departing from thespirit or scope of the invention as defined in the appended claims.

The invention claimed is:
 1. A computing system comprising: acommunication interface configured to communicate with a robot having arobot arm that includes a plurality of arm segments which are movablyconnected to each other at a plurality of joints; and at least oneprocessing circuit configured, when the computing system is incommunication with the robot, to perform the following: selecting atleast one of: (i) a first joint from among the plurality of jointswithout selecting any other joint of the plurality of joints, or (ii) afirst arm segment from among the plurality of arm segments withoutselecting any other arm segment of the plurality of arm segments,wherein the first joint connects the first arm segment to a second armsegment that is immediately adjacent to the first arm segment;outputting a set of one or more movement commands for causing robot armmovement that includes relative movement between the first arm segmentand the second arm segment via the first joint; receiving a set ofactuation data associated with the first joint or the first arm segment,wherein the set of actuation data is sensor data indicative of overalltorque or overall force at the first joint in a time period during whichthe relative movement between the first arm segment and the second armsegment is occurring; receiving a set of movement data associated withthe first joint or the first arm segment, wherein the set of movementdata is sensor data indicative of an amount or rate of the relativemovement between the first arm segment and the second arm segment duringthe time period; determining, based on the set of actuation data and theset of movement data, at least one of: (i) a friction parameter estimateassociated with friction between the first arm segment and the secondarm segment, or (ii) a center of mass (CoM) estimate associated with thefirst arm segment; and outputting a subsequent set of one or moremovement commands for causing subsequent robot arm movement, wherein thesubsequent set of one or more movement commands are generated based onthe at least one of: (i) the friction parameter estimate or (ii) the CoMestimate associated with the first arm segment.
 2. The computing systemof claim 1, wherein the set of one or more movement commands are forcausing the relative movement between the first arm segment and thesecond arm segment without causing relative movement between any otherpair of immediately adjacent arm segments of the plurality of armsegments.
 3. The computing system of claim 2, wherein the at least oneprocessing circuit is configured, when the robot in communication withthe computing system has a plurality of actuators for outputtingactuation at the plurality of joints, to select a first actuator foractivation from among the plurality of actuators without selecting anyother actuator of the plurality of actuators for activation, wherein thefirst actuator corresponds with the first joint or the first armsegment, and wherein the set of one or more movement commands generatedby the at least one processing circuit are for causing activation of thefirst actuator without causing activation of any other actuator of theplurality of actuators.
 4. The computing system of claim 3, wherein theset of one or more movement commands are for causing rotation at thefirst joint without causing rotation at any other joint of the pluralityof joints.
 5. The computing system of claim 1, wherein: the time periodduring which the relative movement between the first arm segment and thesecond arm segment occurs is a first time period, the set of one or moremovement commands is a first set of one or more movement commands, andis for causing the relative movement between the first arm segment andthe second arm segment during the first time period to have a firstspeed profile, the set of actuation data is a first set of actuationdata associated with the first joint or the first arm segment, the setof movement data is a first set of movement data associated with thefirst joint or the first arm segment, wherein both the first set ofactuation data and the first set of movement data are associated withthe first speed profile, and the at least one processing circuit isconfigured to determine the friction parameter estimate based on thefirst set of actuation data and the first set of movement data, and isfurther configured to perform the following: outputting a second set ofone or more movement commands for causing additional relative movementbetween the first arm segment and the second arm segment via the firstjoint, and for causing the additional relative movement to have a secondspeed profile different than the first speed profile; receiving a secondset of actuation data associated with the first joint or first armsegment, wherein the second set of actuation data is sensor dataindicative of overall torque or overall force at the first joint duringa second time period during which the additional relative movement isoccurring; receiving a second set of movement data associated with thefirst joint or first arm segment, wherein the second set of movementdata is sensor data indicative of an amount or rate of the additionalrelative movement during the second time period; and determining the CoMestimate based on the second set of actuation data and the second set ofmovement data, wherein the subsequent set of one or more movementcommands are generated based on the friction parameter estimate and theCoM estimate.
 6. The computing system of claim 5, wherein the firstspeed profile includes a first plurality of values for rotational speedcorresponding to different points in time within the first time period,wherein at least one of the first plurality of values is equal to apredefined maximum operation speed, and wherein the second speed profileincludes a second plurality of values for rotational speed correspondingto different points in time within the second time period, wherein allof the second plurality of values are less than or equal to a predefinedspeed threshold.
 7. The computing system of claim 1, wherein the set ofone or more movement commands are generated for causing the rate of therelative movement to reach a predefined maximum operation speed duringat least a portion of the time period, such that at least a portion ofthe set of actuation data and at least a portion of the set of movementdata corresponds to the predefined maximum operation speed, wherein theat least one processing circuit is configured to determine the frictionparameter estimate based on the set of actuation data and the set ofmovement data.
 8. The computing system of claim 7, wherein the frictionparameter estimate is an estimate of a coefficient of viscous friction,or is an estimate of coulomb friction.
 9. The computing system of claim1, wherein the set of one or more movement commands are generated forcausing the rate of the relative movement to be less than or equal to apredefined acceleration threshold during an entirety of the time periodin which the relative movement is occurring, wherein the at least oneprocessing circuit is configured to determine the CoM estimate based onthe set of actuation data and the set of movement data.
 10. Thecomputing system of claim 1, wherein the at least one processing circuitis configured, when the set of one or more movement commands are forcausing relative rotation between the first arm segment and the secondarm segment via the first joint, to perform the following: determiningwhether a rotational axis for the relative rotation is within animaginary cone which represents a range of orientations for therotational axis, wherein the range of orientations include a verticalorientation, and wherein respective angles between the verticalorientation and all other orientations in the range of orientations isless than or equal to a predefined angle threshold; and outputting anindication of whether the rotational axis is within the imaginary cone.11. The computing system of claim 1, wherein the at least one processingcircuit is configured, when the plurality of arm segments are connectedas a series of arm segments, and include one or more distal arm segmentsdownstream of the first arm segment, to determine a CoM estimateassociated with the one or more distal arm segments, wherein the CoMestimate associated with the first arm segment is determined based onthe CoM estimate associated with the one or more distal arm segments.12. The computing system of claim 11, wherein the at least oneprocessing circuit is configured to determine the CoM estimateassociated with the first arm segment by: determining an initial CoMestimate associated with the first arm segment based on the set ofactuation data and the set of movement data; determining, based on theCoM estimate associated with the one or more distal arm segments, anadjustment for removing an influence that the one or more distal armsegments have on the initial CoM estimate; and applying the adjustmentto the initial CoM estimate to generate an adjusted CoM estimateassociated with the first arm segment, wherein the CoM estimateassociated with the first arm segment is equal to or based on theadjusted CoM estimate.
 13. The computing system of claim 12, wherein theat least one processing circuit is configured, when the second armsegment is upstream of the first arm segment, to determine a CoMestimate associated with the second arm segment based on the CoMestimate associated with the first arm segment.
 14. The computing systemof claim 1, wherein the at least one processing circuit is furtherconfigured to determine a range of motion for the relative movementbetween the first arm segment and the second arm segment, wherein theset of one or more movement commands are generated based on the range ofmotion.
 15. The computing system of claim 1, wherein the at least oneprocessing circuit is configured, when the set of actuation datameasures electrical current flowing through an actuator for causing therelative movement between the first arm segment and the second armsegment, to determine the overall torque at the first joint based on theelectrical current.
 16. The computing system of claim 1, wherein the atleast one processing circuit is further configured to determine, basedon the set of actuation data and the set of movement data, a moment ofinertia estimate associated with the first arm segment.
 17. Thecomputing system of claim 1, wherein: the time period during which therelative movement between the first arm segment and the second armsegment occurs is a first time period, the set of actuation dataassociated with the first joint or the first arm segment is a first setof actuation data, and the set of movement data associated with thefirst joint or the first arm segment is a first set of movement data,the set of one or more movement commands is a first set of one or moremovement commands, the friction parameter estimate associated withfriction between the first arm segment and the second arm segment is afirst friction parameter estimate, the CoM estimate associated with thefirst arm segment is a first CoM estimate, and wherein the at least oneprocessing circuit is configured to perform the following: selecting atleast one of: (i) a second joint from among the plurality of jointswithout selecting any other joint of the plurality of joints, or (ii)the second arm segment from among the plurality of arm segments withoutselecting any other arm segment of the plurality of arm segments,wherein the second joint connects the second arm segment to a third armsegment that is immediately adjacent to the second arm segment;outputting a second set of one or more movement commands for causingrobot arm movement that includes relative movement between the secondarm segment and the third arm segment via the second joint; receiving asecond set of actuation data and a second set of movement data, whereinthe second set of actuation data is sensor data indicative of overalltorque or overall force at the second joint during a second time periodduring in which the relative movement between the second arm segment andthe third arm segment is occurring, and wherein the second set ofmovement data is sensor data indicative of an amount or rate of therelative movement between the second arm segment and the third armsegment during the second time period; and determining, based on thesecond set of actuation data and the second set of movement data, atleast one of: (i) a second friction parameter estimate, or (ii) a secondCoM estimate, wherein the second friction parameter estimate isassociated with friction between the second arm segment and the thirdarm segment, and the second CoM estimate is indicative of a CoM of thesecond arm segment, and the subsequent set of one or more movementcommands are generated further based on the at least one of: (i) thesecond friction parameter estimate or (ii) the second CoM estimate. 18.A non-transitory computer-readable medium having instructions thereonthat, when executed by at least one processing circuit of a computingsystem, causes the at least one processing circuit to perform thefollowing: selecting, when the computing system is in communication witha robot having a robot arm that includes a plurality of arm segmentswhich are movably connected to each other at a plurality of joints, atleast one of: (i) a first joint from among the plurality of jointswithout selecting any other joint of the plurality of joints, or (ii) afirst arm segment from among the plurality of arm segments withoutselecting any other arm segment of the plurality of arm segments,wherein the first joint connects the first arm segment to a second armsegment that is immediately adjacent to the first arm segment;outputting a set of one or more movement commands for causing robot armmovement that includes relative movement between the first arm segmentand the second arm segment via the first joint; receiving a set ofactuation data associated with the first joint or the first arm segment,wherein the set of actuation data is sensor data indicative of overalltorque or overall force at the first joint in a time period during whichthe relative movement between the first arm segment and the second armsegment is occurring; receiving a set of movement data associated withthe first joint or the first arm segment, wherein the set of movementdata is sensor data indicative of an amount or rate of the relativemovement between the first arm segment and the second arm segment duringthe time period; determining, based on the set of actuation data and theset of movement data, at least one of: (i) a friction parameter estimateassociated with friction between the first arm segment and the secondarm segment, or (ii) a center of mass (CoM) estimate associated with thefirst arm segment; and outputting a subsequent set of one or moremovement commands for causing subsequent robot arm movement, wherein thesubsequent set of one or more movement commands are generated based onthe at least one of: (i) the friction parameter estimate or (ii) the CoMestimate associated with the first arm segment.
 19. The non-transitorycomputer-readable medium of claim 18, wherein the set of one or moremovement commands are for causing the relative movement between thefirst arm segment and the second arm segment without causing relativemovement between any other pair of immediately adjacent arm segments ofthe plurality of arm segments.
 20. A method comprising: selecting, by acomputing system configured to communicate with a robot having a robotarm that includes a plurality of arm segments which are movablyconnected to each other at a plurality of joints, at least one of: (i) afirst joint from among the plurality of joints without selecting anyother joint of the plurality of joints, or (ii) a first arm segment fromamong the plurality of arm segments without selecting any other armsegment of the plurality of arm segments, wherein the first jointconnects the first arm segment to a second arm segment that isimmediately adjacent to the first arm segment; outputting, by thecomputing system, a set of one or more movement commands for causingrobot arm movement that includes relative movement between the first armsegment and the second arm segment via the first joint; receiving, bythe computing system, a set of actuation data associated with the firstjoint or the first arm segment, wherein the set of actuation data issensor data indicative of overall torque or overall force at the firstjoint in a time period during which the relative movement between thefirst arm segment and the second arm segment is occurring; receiving, bythe computing system, a set of movement data associated with the firstjoint or the first arm segment, wherein the set of movement data issensor data indicative of an amount or rate of the relative movementbetween the first arm segment and the second arm segment during the timeperiod; determining, by the computing system based on the set ofactuation data and the set of movement data, at least one of: (i) afriction parameter estimate associated with friction between the firstarm segment and the second arm segment, or (ii) a center of mass (CoM)estimate associated with the first arm segment; and outputting, by thecomputing system, a subsequent set of one or more movement commands forcausing subsequent robot arm movement, wherein the subsequent set of oneor more movement commands are generated based on the at least one of:(i) the friction parameter estimate or (ii) the CoM estimate associatedwith the first arm segment.